package gy.lovers; import java.util.ArrayList; import java.util.List; import java.util.Random; import android.app.Activity; import android.app.Service; import android.content.res.Resources; 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.Button; //需要实现SensorEventListener接口 public class LoversChoise extends Activity implements SensorEventListener{ Button clear; //定义sensor管理器 private SensorManager mSensorManager; //震动 private Vibrator vibrator; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.loverschoise); //获取传感器管理服务 mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); //震动 vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE); clear = (Button) findViewById(R.id.clear); clear.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub //点击button后,给button按钮设置了text clear.setText("现在给button的text赋值喽~"); }); @Override protected void onResume(){ super.onResume(); //加速度传感器 mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), //还有SENSOR_DELAY_UI、SENSOR_DELAY_FASTEST、SENSOR_DELAY_GAME等, //根据不同应用,需要的反应速率不同,具体根据实际情况设定 SensorManager.SENSOR_DELAY_NORMAL); } @Override protected void onStop(){ mSensorManager.unregisterListener(this); super.onStop(); } @Override protected void onPause(){ mSensorManager.unregisterListener(this); super.onPause(); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { // TODO Auto-generated method stub //当传感器精度改变时回调该方法,Do nothing. } @Override public void onSensorChanged(SensorEvent event) { // TODO Auto-generated method stub int sensorType = event.sensor.getType(); //values[0]:X轴,values[1]:Y轴,values[2]:Z轴 float[] values = event.values; if(sensorType == Sensor.TYPE_ACCELEROMETER){ /*因为一般正常情况下,任意轴数值最大就在9.8~10之间,只有在你突然摇动手机 *的时候,瞬时加速度才会突然增大或减少。 *所以,经过实际测试,只需监听任一轴的加速度大于14的时候,改变你需要的设置 *就OK了~~~ */ if((Math.abs(values[0])>14||Math.abs(values[1])>14||Math.abs(values[2])>14)){ //摇动手机后,设置button上显示的字为空 clear.setText(null); //摇动手机后,再伴随震动提示~~ vibrator.vibrate(500); } } } }
现在的不少应用都用到了摇动手机改变内容的功能,比如微信中的“摇一摇”功能。前两天要实现这个功能,稍微看了一下关于传感器Sensor的内容。
传感器有几种类型:
方向传感器: Sensor.TYPE_ORIENTATION
加速度(重力)传感器: Sensor.TYPE_ACCELEROMETER
光线传感器: Sensor.TYPE_LIGHT
磁场传感器: Sensor.TYPE_MAGNETIC_FIELD
距离(临近性)传感器: Sensor.TYPE_PROXIMITY
温度传感器: Sensor.TYPE_TEMPERATURE
在摇动手机的功能中,我们只用加速度传感器就行了~~
加速度传感器返回值的单位是加速度的单位
m/s^2(米每二次方秒),有三个方向的值分别是
values[0]:
x-axis 方向加速度
values[1]:
y-axis 方向加速度
values[2]:
z-axis 方向加速度
其中x,y,z方向的定义是以水平放置在的手机的右下脚为参照系坐标原点
x
方向就是手机的水平方向,右为正
y
方向就是手机的水平垂直方向,前为正
y
方向就是手机的空间垂直方向,天空的方向为正,地球的方向为负
所以说,你的手机放置的空间位置不同,它三个方向的加速度也不同。在这里,三个方向的加速度,与我们传统意义上的加速度(9.8m/s2)有所区别,需细细品味
以上是摇动手机后清除TextView的文字的代码。
1楼gelosie昨天 15:43嗯,基于 Android 的
一、数据结构与顺序表
+理解数据结构与算法
+掌握顺序表的操作
数据结构 是指相互之间有一定联系的数据元素的集合,元素之间的相互联系 称为 逻辑结构。
数据元素之间的逻辑结构分为:
集合 线性 树形 网状结构
无序 一条线 Win资源管理器 拓扑
数据结构的研究:
1、数据的逻辑结构
逻辑关系的描述,独立于计算机的。
分为:线性(线性表、栈、队列)和非线性(树形结构、网状结构)
2、数据的存储结构
分为:顺序存储、链式存储、散列表(哈希)、索引表(目录)
3、数据的运算
分为:增加、删除、修改、查找、排序
算法 是对特定问题求解方法的一种描述,是指令的有限序列,其中每一条指令表示一个或多个操作。
描述算法的两个参数:
时间复杂度:基本操作重复执行n次 T(n)=0(f(n))
空间复杂度:运行时所需要的存储空间的大小的质量 S(n)=0(f(n))
算法的要求:
正确性、可读性、健壮性、通用性、效率与存储量需求
================================================================================
线性表:
由 n(n>0)个元素组成
n=0 空表
n>0 讲非空线性表记为 a0 a1 a2 a(n-1)
a0为首节点 a(n-1)尾节点
顺序表:线性表的节点按照逻辑顺序依次存放在一组地址连续的存储单元,用这个方法存储的线性表为顺序表
两个最常见的操作:存数据和取数据
特点:
1、物理顺序和逻辑顺序是一致的
2、数据之间的关系,可通过物理关系体现
操作:
初始化顺序表
在指定位置插入一个元素
实现步骤:
1、检查顺序表是否已满
2、插入的位置i是否合法(是否越界)
3、将现行表L中的第i个元素至第n个结点后移一个位置
4、将结点e插入到结点a(i-1)之后(其实就是第i个位置)
5、线性表长度+1
在指定位置删除一个元素
实现步骤:
1、检查顺序表是否为空
2、检查删除位置i是否合法
3、将线性表L中的第i+1个至第n个结点依次向前移动一个位置
4、线性表长度-1
顺序表总结:
1、插入或删除一个数据元素时,时间主要耗费在移动元素上,而移动元素的个数取决于插入或删除元素的位置
2、空间不能充分利用,扩展能力较差
3、若线性表的主要操作时进行查找及存取表中任一个元素,插入和删除操作较少时,采用顺序表存储结构为宜
作业:
1、从文件中读取一个顺序表的数据,对顺序表中的数据进行添加、删除、修改等操作,然后再保存到原文件中,每个功能编写一个函数,由mian函数调用‘
2、合并两个顺序表,需要将其中一个表的数据连接到另外一个表的后面,需要考虑内存溢出的情况。
本来是写给组内的一个同学的,没想到越写越长,想来想去,还是写个自己吧,毕竟每个人都有按自己的方式成长的权利和自由,而且自己也还在成长中,难免会误导别人~珍惜每个人在成长时付出的努力~
产品没有清晰的产品预期;研发没有工作激情;测试为了测试而测试。为什么会这样呢?因为咱们目标性不够。好的团队一定是和而不同的。比方说大家都相信这个产品会成功,都有一个美好的愿景,但在操作过程中,有的人要在过程中提升自己,有的人要在过程中获得物质保障等等。
那我们只能先做好自己的本职:1、保证质量;2、保证进度;3、剖析和自省
这里的质量不只是提测的代码,还包括项目流程中的所有活动,及各个活动的产出。如需求评审,这个流程的存在是否有意义,存在的形式是否达到了预期。