- 浏览: 426879 次
- 性别:
- 来自: 深圳/湛江
文章分类
最新评论
-
wangyudong:
很多API doc生成工具生成doc需要重度依赖代码里加注解的 ...
[ios]利用xcode自动生成项目文档 -
tiger1819:
有源码么,想学习
[android]仿360状态,类流量监控桌面浮动显示 -
119568242:
借我一双翅膀 写道大哥,求指教啊?
IOS 开发,调用打电话,发短信,打开网址 -
借我一双翅膀:
大哥,求指教啊
IOS 开发,调用打电话,发短信,打开网址 -
li247276297:
楼主 是不是要加个权限?
[android]仿360状态,类流量监控桌面浮动显示
传感器
sensorManager = (SensorManager) getContext().getSystemService(
Context.SENSOR_SERVICE);
//获得传感器控制器[SensorManager]
//getContext()获得环境
//getSystemService(Context.SENSOR_SERVICE);获得系统服务(传感器)
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_NORMAL);
//注册传感器监听器
//(监听器、监听内容、监听精度)
//监听器 既 监听内容发生变化的回调函数
//监听内容
Android提供很很多种传感器 传入监听的具体哪一种传感器
//监听精度 多久监听一次
传感器监听器
实现SensorEventListener接口
复写下面方法
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
pitch = event.values[SensorManager.DATA_Y];
if (pitch < 0) {
pitch = pitch * -1;
}
Log.v("myTag", "pitch:" + pitch);
if (v != null) {
v.setText("pitch:" + pitch);
}
}
重点是onSensorChanged()
当监听的具体传感器发生变化时,调用的函数。
可以从传入的SensorEvent中取值
SensorEvent.values[对应你想取得值(这个值是要在你监听的传感器上有的)]
SensorManager.DATA_Y 意思是在正拿手机的情况下手机与地面的倾角。
摄像头
surfaceView1=(SurfaceView)findViewById(R.id.surfaceView1);
//使用摄像头是需要使用到SurfaceView
//获得SurfaceView对象
surfaceHolder=surfaceView1.getHolder();
//获得SurfaceView的holder
//对SurfaceView的操作都在holder上进行
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
//设置 Type
surfaceHolder.addCallback(this);
//设置回调函数对象
//当SurfaceView创建 销毁是 调用此对象onCreate onDestroy方法
//此函数需要实现SurfaceHolder.Callback接口
回调函数Callback内容
public void surfaceCreated(SurfaceHolder holder) {
//当SurfaceView创建时调用此方法
camera=Camera.open();
try {
Camera.Parameters parameters=camera.getParameters();
//获得camera对象的参数对象
Camera.Size a=parameters.getPreviewSize();
Log.v("myTag", "a.height:"+a.height);
Log.v("myTag", "a.width:"+a.width);
parameters.setPreviewSize(480, 320);
//获得camera对象的预览大小
camera.setPreviewDisplay(surfaceHolder);
//设置camera对象的预览显示,显示在surfaceHolder上。[既SurfaceView]
camera.startPreview();
//设置camera对象的预览开始预览
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
System.out.println("surfaceDestroyed");
camera.stopPreview();
//关闭预览
camera.release();
//释放资源
}
注意:
摄像头默认是横向拍摄的
所以要在AndroidManifest.xml下把该activity布局设置成横向的。
使用摄像头还需要开启权限
在<manifest>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</manifest>
传感器完整代码
package com.poolo;
import android.content.Context;
import android.hardware.Camera;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
public class SensorControl extends View implements SensorEventListener {
private SensorManager sensorManager;
float pitch = 0f;
TextView v = null;
public SensorControl(Context context, AttributeSet attrs) {
super(context, attrs);
// create SurfaceHolder
sensorManager = (SensorManager) getContext().getSystemService(
Context.SENSOR_SERVICE);
// registerListene
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_NORMAL);
}
private Object getDefaultSensor(int typeOrientation) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
pitch = event.values[SensorManager.DATA_Y];
if (pitch < 0) {
pitch = pitch * -1;
}
Log.v("myTag", "pitch:" + pitch);
if (v != null) {
v.setText("pitch:" + pitch);
}
}
public void setTextView(TextView v) {
this.v = v;
}
}
摄像头完整代码
package com.lurencun.poolo;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.hardware.Camera.AutoFocusCallback;
import android.hardware.Camera.PictureCallback;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class CameraTempActivity extends Activity implements SurfaceHolder.Callback {
/** Called when the activity is first created. */
SurfaceHolder surfaceHolder;
SurfaceView surfaceView1;
Button button1;
ImageView imageView1;
Camera camera;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
//设为横向显示。因为摄像头会自动翻转90度,所以如果不横向显示,看到的画面就是翻转的。
//本例中不横向
surfaceView1=(SurfaceView)findViewById(R.id.surfaceView1);
surfaceHolder=surfaceView1.getHolder();
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
surfaceHolder.addCallback(this);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
camera=Camera.open();
try {
Camera.Parameters parameters=camera.getParameters();
Camera.Size a=parameters.getPreviewSize();
Log.v("myTag", "a.height:"+a.height);
Log.v("myTag", "a.width:"+a.width);
parameters.setPreviewSize(480, 320);
//设置参数
camera.setPreviewDisplay(surfaceHolder);
//摄像头画面显示在Surface上
camera.startPreview();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
System.out.println("surfaceDestroyed");
camera.stopPreview();
//关闭预览
camera.release();
//释放资源
}
}
2011-9-16
sensorManager = (SensorManager) getContext().getSystemService(
Context.SENSOR_SERVICE);
//获得传感器控制器[SensorManager]
//getContext()获得环境
//getSystemService(Context.SENSOR_SERVICE);获得系统服务(传感器)
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_NORMAL);
//注册传感器监听器
//(监听器、监听内容、监听精度)
//监听器 既 监听内容发生变化的回调函数
//监听内容
Android提供很很多种传感器 传入监听的具体哪一种传感器
//监听精度 多久监听一次
传感器监听器
实现SensorEventListener接口
复写下面方法
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
pitch = event.values[SensorManager.DATA_Y];
if (pitch < 0) {
pitch = pitch * -1;
}
Log.v("myTag", "pitch:" + pitch);
if (v != null) {
v.setText("pitch:" + pitch);
}
}
重点是onSensorChanged()
当监听的具体传感器发生变化时,调用的函数。
可以从传入的SensorEvent中取值
SensorEvent.values[对应你想取得值(这个值是要在你监听的传感器上有的)]
SensorManager.DATA_Y 意思是在正拿手机的情况下手机与地面的倾角。
摄像头
surfaceView1=(SurfaceView)findViewById(R.id.surfaceView1);
//使用摄像头是需要使用到SurfaceView
//获得SurfaceView对象
surfaceHolder=surfaceView1.getHolder();
//获得SurfaceView的holder
//对SurfaceView的操作都在holder上进行
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
//设置 Type
surfaceHolder.addCallback(this);
//设置回调函数对象
//当SurfaceView创建 销毁是 调用此对象onCreate onDestroy方法
//此函数需要实现SurfaceHolder.Callback接口
回调函数Callback内容
public void surfaceCreated(SurfaceHolder holder) {
//当SurfaceView创建时调用此方法
camera=Camera.open();
try {
Camera.Parameters parameters=camera.getParameters();
//获得camera对象的参数对象
Camera.Size a=parameters.getPreviewSize();
Log.v("myTag", "a.height:"+a.height);
Log.v("myTag", "a.width:"+a.width);
parameters.setPreviewSize(480, 320);
//获得camera对象的预览大小
camera.setPreviewDisplay(surfaceHolder);
//设置camera对象的预览显示,显示在surfaceHolder上。[既SurfaceView]
camera.startPreview();
//设置camera对象的预览开始预览
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
System.out.println("surfaceDestroyed");
camera.stopPreview();
//关闭预览
camera.release();
//释放资源
}
注意:
摄像头默认是横向拍摄的
所以要在AndroidManifest.xml下把该activity布局设置成横向的。
使用摄像头还需要开启权限
在<manifest>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</manifest>
传感器完整代码
package com.poolo;
import android.content.Context;
import android.hardware.Camera;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
public class SensorControl extends View implements SensorEventListener {
private SensorManager sensorManager;
float pitch = 0f;
TextView v = null;
public SensorControl(Context context, AttributeSet attrs) {
super(context, attrs);
// create SurfaceHolder
sensorManager = (SensorManager) getContext().getSystemService(
Context.SENSOR_SERVICE);
// registerListene
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_NORMAL);
}
private Object getDefaultSensor(int typeOrientation) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
pitch = event.values[SensorManager.DATA_Y];
if (pitch < 0) {
pitch = pitch * -1;
}
Log.v("myTag", "pitch:" + pitch);
if (v != null) {
v.setText("pitch:" + pitch);
}
}
public void setTextView(TextView v) {
this.v = v;
}
}
摄像头完整代码
package com.lurencun.poolo;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.hardware.Camera.AutoFocusCallback;
import android.hardware.Camera.PictureCallback;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class CameraTempActivity extends Activity implements SurfaceHolder.Callback {
/** Called when the activity is first created. */
SurfaceHolder surfaceHolder;
SurfaceView surfaceView1;
Button button1;
ImageView imageView1;
Camera camera;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
//设为横向显示。因为摄像头会自动翻转90度,所以如果不横向显示,看到的画面就是翻转的。
//本例中不横向
surfaceView1=(SurfaceView)findViewById(R.id.surfaceView1);
surfaceHolder=surfaceView1.getHolder();
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
surfaceHolder.addCallback(this);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
camera=Camera.open();
try {
Camera.Parameters parameters=camera.getParameters();
Camera.Size a=parameters.getPreviewSize();
Log.v("myTag", "a.height:"+a.height);
Log.v("myTag", "a.width:"+a.width);
parameters.setPreviewSize(480, 320);
//设置参数
camera.setPreviewDisplay(surfaceHolder);
//摄像头画面显示在Surface上
camera.startPreview();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
System.out.println("surfaceDestroyed");
camera.stopPreview();
//关闭预览
camera.release();
//释放资源
}
}
2011-9-16
发表评论
-
[android]使用 Matrix 的随触摸旋转的ImageView
2013-02-22 01:58 7923使用 Matrix 的随触摸旋转的ImageView 突 ... -
[android]动态改变按钮背景状态 StateListDrawable
2012-10-29 10:52 1472动态改变按钮背景状态 很少用到 上次和六哥聊到。 ... -
[android]ViewPage上无法通过onKeyDown()获得按钮事件
2012-08-20 04:53 1365系统无法监听到遥控器在VewPage上的按钮事件,如需 ... -
[android]待解决 lisTview 的onItemSelected 监听事件焦点的问题。
2012-08-18 21:18 2176今天遇到个问题 到目前为止 一直不理解为什么 大概描述下布局 ... -
[android]layout_weight 在layout_width 为fill_parent 与wrap_content 时的不同含义
2012-08-12 12:52 1270转自:http://hi.baidu.com/l ... -
[android]仿制新浪微博消息页面 图标切换动画
2012-08-10 17:33 4031研究了下以前不怎么用到的动画效果的实现 顺便做了一个新浪微 ... -
[android]仿制新浪微博消息页面 图标切换动画
2012-08-10 17:33 3研究了下以前不怎么用到的动画效果的实现 顺便做了一个新浪微 ... -
[android]仿制新浪微博消息页面 图标切换动画
2012-08-10 17:33 0研究了下以前不怎么用到的动画效果的实现 顺便做了一个新浪微 ... -
[android]Activity切换动画
2012-08-10 12:23 1478今天准备比赛的时候 遇到了这个问题。 查了些资料 ... -
android中ADT版本问题:无故报 java.lang.NoClassDefFoundError
2012-07-31 22:08 1792今天修改一个老项目的时候,发现在所有配置正确的情况下,代目无任 ... -
[android]仿360状态,类流量监控桌面浮动显示
2012-05-27 22:03 6031前两天看到部分音频播放器可以实现在桌面上显示歌词,360那个浮 ... -
[转]android开发问题记录 "founderapp"
2012-02-08 10:48 1071这段时间,由于某种原因,一直在做android手机开发, ... -
关于weight
2012-02-05 21:20 843layout_weight=1后,除了其它的控件之外剩 ... -
判断SD卡是否存在
2012-02-02 17:54 873android.os.Environment.getEx ... -
[转]Android文件管理器介绍
2012-02-02 16:50 3081转自:http://www.linuxidc.com/L ... -
[转]Android文件管理器介绍
2012-02-02 16:49 5转自:http://www.linuxidc.com/L ... -
[转]android 几何图形的绘制
2012-02-01 16:06 2192转自:http://byandby.iteye.c ... -
Android菜鸟日记32-游戏中的碰撞
2012-01-11 23:09 1754Android菜鸟日记 32-游戏中的碰撞 一、 ... -
Android菜鸟日记31-selector 中使用 shape
2012-01-11 23:05 1613Android菜鸟日记 31- ... -
Android菜鸟日记30-View与SurfaceView
2012-01-11 22:45 949Android菜鸟日记 30 View与Surfa ...
相关推荐
这篇“Android菜鸟日记25-android反编译”将带你走进Android反编译的世界,揭示APK背后的秘密。 首先,让我们了解什么是Android反编译。Android应用主要由Java语言编写,经过编译后生成Dalvik字节码(.dex文件),...
菜鸟入侵--利用资源搜索动画教程,内附有详细的使用说明 菜鸟入侵之利用资源篇 菜鸟在入侵的时候,如果能充分利用现有的资源,那将对自己的入侵起很大的
菜鸟到老鸟-教你玩转Mac操作
根据提供的文件信息,我们可以推断出这是一套关于Android Studio 1.3.1的教学视频资料,主要面向初学者到进阶用户。接下来,我们将基于这些信息深入探讨相关的知识点。 ### Android Studio 1.3.1简介 Android ...
android-emulator-webrtc 它包含一组React组件,可用于从浏览器与android模拟器进行交互。 它旨在与连接到正在运行的仿真器的一起使用。 有关如何运行可通过网络访问的仿真器的示例,请参见脚本。 npm install --...
#### 1.2 下载与安装 Android SDK - **访问官方文档**:通过访问 `http://developer.android.com/training/basics/firstapp/index.html` 获取最新的安装指南和下载链接。 - **下载 Android SDK**:找到页面上的下载...
#### 一、职场心态与适应性 **菜鸟心态的重要性:** 在《职场菜鸟升职记》这部作品中,作者通过主人公的视角展现了作为一名职场新人所应有的态度。开篇即强调“我是菜鸟”的心态,这种心态不仅意味着对自身能力的...
Android课程设计-计菜鸟裹裹app源代码+文档说明菜鸟裹裹主要包括1.支付宝快速登录2.支付宝注册3.手机淘宝登录,手机登录4.首页-校园认证5.首页-包裹搜索,首页-添加包裹6.首页-扫一扫7.首页-身份码8.首页-寄万物,寄...
android-json-0.0.20131108.vaadin1.jar
手打从菜鸟到入门--电脑篇 此文章推荐刚刚接触电脑的朋友们阅读,书籍会更新,属于网络文章,相信对大多数网友会有帮助!
菜鸟飞飞飞-微服务架构的想法
STM32菜鸟学习手册-罗嗦版 。
菜鸟-需求预测与分仓规划_cainiao
《Delphi7教程之菜鸟先飞版--帮你打通任督二脉(第1式)》是一份专为初学者设计的教程,旨在帮助新手快速掌握Delphi7编程的基础知识和技巧。Delphi7是一款强大的Windows应用程序开发工具,以其高效的代码生成、直观的...
《CCNA菜鸟笔记2007修正版》可能是早期的学习资料,尽管如此,它依然包含了许多关键概念,如OSI模型、网络拓扑结构、物理层与数据链路层协议(如Ethernet、VLAN、STP)、IP地址分配和子网划分、以及基本的路由器和...
中国移动-杨琛-从菜鸟到骨灰-研发质量管理和测试效能演进之路
USB调试模式允许开发者通过USB连接将设备与电脑相连,进行应用程序的调试和数据传输。 接下来,你需要访问小米官网下载对应的驱动程序。进入小米官网的服务板块,然后选择资源下载,进一步找到手机驱动部分。根据你...
菜鸟玩破解--BT5_中文版破解WPA2_WPA简单过程教程 如题,简单的WPA2_WPA破解过程教程,首先下载BT5_中文版,然后按图示进行。