android重力传感器
1. android重力感应不准怎么办
重力传感器校准方法(G-sensor校准的操作说明)
在进行校准操作之前请确定:
1. 手机处于关机状态;
2. 按侧音量下键+开关键会出现以下图片;
3. 出现如图(一)画面时,按侧音量下键进入Item Test如图片(二)界面;
( 图片六)
上述操作完成后,按返回键返回到最外菜单,选择reboot 重启手机,开机后,可以进入一些界面如设置,计算器等翻转手机看界面是否翻转正常。
2. 安卓手机的重力感应系统有时候会失灵,怎么修复
有的时候,运行并不多,但是感觉手机有点卡,其实,也是安卓系统的一个小毛病吧。cpu过高,运行过多,是反应慢的一个重要因素
3. android中用重力传感器怎么判断Y轴的移动距离
一 介绍Sensor类 SDK只有一句介绍“Class representing a sensor. Use getSensorList(int) to get the list of available Sensors.”,表示一个感应器的类,可以使用getSensorList方法(此方法属于接下来要讲的SensorManager)获得所有可用的感应器,该方法返回的是一个List<Sensor> 下面的列表显示了,Sensor所提供的所有服务 ---------------------------------------------------------------------------------------------------------------------------------------------------------- Constants int TYPE_ACCELEROMETER A constant describing an accelerometer sensor type. //三轴加速度感应器 返回三个坐标轴的加速度 单位m/s2 int TYPE_ALL A constant describing all sensor types. //用于列出所有感应器 int TYPE_GRAVITY A constant describing a gravity sensor type. //重力感应器 int TYPE_GYROSCOPE A constant describing a gyroscope sensor type //陀螺仪 可判断方向 返回三个坐标轴上的角度 int TYPE_LIGHT A constant describing an light sensor type. //光线感应器 单位 lux 勒克斯 int TYPE_LINEAR_ACCELERATION A constant describing a linear acceleration sensor type. //线性加速度 int TYPE_MAGNETIC_FIELD A constant describing a magnetic field sensor type. //磁场感应 返回三个坐标轴的数值 微特斯拉 int TYPE_ORIENTATION This constant is deprecated. use SensorManager.getOrientation() instead. //方向感应器 已过时 可以使用方法获得 int TYPE_PRESSURE A constant describing a pressure sensor type //压力感应器 单位 千帕斯卡 int TYPE_PROXIMITY A constant describing an proximity sensor type. //距离传感器 int TYPE_ROTATION_VECTOR A constant describing a rotation vector sensor type. //翻转传感器 int TYPE_TEMPERATURE A constant describing a temperature sensor type //温度传感器 单位 摄氏度 ---------------------------------------------------------------------------------------------------------------------------------------------------------- 此类中包含的方法都是get型的 用来获取所选sensor的一些属性,sensor类一般不需要new而是通过SensorManager的方法获得 二 介绍SensorManager类 SDK解释:“SensorManager lets you access the device's sensors. Get an instance of this class by calling Context.getSystemService() with the argument SENSOR_SERVICE. Always make sure to disable sensors you don't need, especially when your activity is paused. Failing to do so can drain the battery in just a few hours. Note that the system will not disable sensors automatically when the screen turns off. ” SensorManager 允许你访问设备的感应器。通过传入参数SENSOR_SERVICE参数调用Context.getSystemService方法可以获得一个sensor的实例。永远记得确保当你不需要的时候,特别是Activity暂定的时候,要关闭感应器。忽略这一点肯能导致几个小时就耗尽电池,注意当屏幕关闭时,系统不会自动关闭感应器。 三 常用的感应器 (1) 加速度感应器 可以通过这个感应器获得三个浮点型 x-axis y-axis z-axis 可参阅《android 高级编程2》中的一个插图分析次数据 X Y Z分别对应values[0]到[2] X表示左右移动的加速度 Y表示前后移动的加速度 Z表示垂直方向的加速度 下面先看一个基本的获取加速的demo,希望大家好好注意代码中的注释 做的很简单,就是在屏幕上显示三个方向上加速度的值
4. android怎么判断手机重力感应是否开启
ndroid中检测重力感应变化大致需要下面几个步骤:
1) 得到传感器服务 getSystemService(SENSOR_SERVICE);
得到一个SensorManager,用来管理分配调度处理Sensor的工作,注意它并不服务运行于后台,真正属于Sensor的系统服务是SensorService,终端下#service list可以看到sensorservice: [android.gui.SensorServer]。
2) 得到传感器类型 getDefaultSensor(Sensor.TYPE_GRAVITY);
当然还有各种千奇百怪的传感器,可以查阅Android官网API或者源码Sensor.java。
3) 注册监听器 SensorEventListener
应用程序打开一个监听接口,专门处理传感器的数据,这个监听机制比较重要,被系统广泛使用。
4) 实现监听器的回调函数 onSensorChanged, onAccuracyChanged
5. android的横竖屏幕切换跟重力感应有啥区别
有区别,重力感应是传感器信号,而屏幕切换是会改变程序的生命周期的。切换这个动作是根据重力感应的信号变化而产生的。就好像你突然感觉摔倒(重力感应),然后随口说了一句“我cao”(切换屏幕)。。。。很通俗易懂吧?
6. 安卓的陀螺仪和重力感应是什么
陀螺仪通过测量物体旋转时的角速度,再经手机中的处理器对角速度积分后,可以得到手机在某一段时间内旋转的角度。普通手机的重力传感器只可以获得手机的相对水平面的转角。通俗的讲,普通手机的重力感应只能感应相对水平面的转角,而有陀螺仪的手机可以感应任何方向的转角,可以识别更多的动作。
附带网友牛叉解释:有陀螺仪的手机放在地上,你拿鞭子抽它它会转,一般机子不行。
哈哈
7. 请问安卓手机在哪里设置重力感应啊(转屏)
你好,屏幕转屏和重力感应是没有牵连的,重力感应也不能设置,只能设置距离感应,距离感应就是你打电话时手机屏幕会自动黑掉,等你打完了,从耳朵边拿开的时候手机屏幕会自动亮起来,这个就是距离感应,你要设置转屏,设置—显示—屏幕自动旋转,去掉勾就可以了,如果手机游戏没有重力感应了,可能是那款游戏不支持,可以下载雷霆赛车来试试,如果还是不能使用重力感应,那就说明你手机坏了。
(7)android重力传感器扩展阅读:
通过对力敏感的传感器,感受手机在变换姿势时,重心的变化,使手机光标变化位置从而实现选择的功能。
手机重力感应技术:利用压电效应实现,简单来说是是测量内部一片重物(重物和压电片做成一体)重力正交两个方向(x轴与y轴)的分力大小,来判定水平方向。
手机重力感应指的是手机内置重力摇杆芯片,支持摇晃切换所需的界面和功能,甩歌甩屏,翻转静音,甩动切换视频等,是一种非常具有使用乐趣的功能。
传感器是一种能把物理量或化学量转变成便于利用的电信号的器件。国际电工委员会(IEC:International Electrotechnical Committee)的定义为:“传感器是测量系统中的一种前置部件,它将输入变量转换成可供测量的信号”。按照Gopel等的说法是:“传感器是包括承载体和电路连接的敏感元件”,而“传感器系统则是组合有某种信息处理(模拟或数字)能力的系统”。传感器是传感系统的一个组成部分,它是被测量信号输入的第一道关口。 传感器把某种形式的能量转换成另一种形式的能量。
8. 安卓手机重力传感器在哪些地方有用到呢
所属分类:安卓知识普及
重力传感器
是采用
弹性敏感元件
制成悬臂式位移器,与采用弹性敏感元件制成的储能弹簧来驱动电触点,完成从重力变化到电信号的转换。
在现在绝大多数中高端智能手机和平板电脑中,应该都有内置重力传感器,不管是苹果的
iphone和iPad
也好,Android
系统的众多品牌手机,几乎都加了这个传感器。
笔者用的是
安卓手机
,一般把上面的状态栏下拉后,有个自动旋转打开,那个有些应用显示时就会因为手机侧身而显示旋转,在玩游戏可以代替上下左右。
9. 怎么把安卓系统中的重力传感器的数据读出来
有相应的编程接口。了解一下基本的安卓编程就知道了。
各种游戏 APP能使用重力数据 就是调取了相应的数据。
参考:
import java.util.List;
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class SensorGetValueActivity extends Activity implements SensorEventListener{
private SensorManager sensorManager;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sensorManager=(SensorManager)this.getSystemService(SENSOR_SERVICE);
setContentView(R.layout.main);
Button close=(Button)findViewById(R.id.btn_close);
close.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}
});
}
protected void onResume(){
super.onResume();
List<Sensor> sensors=sensorManager.getSensorList(Sensor.TYPE_ALL);
for(Sensor s:sensors){
sensorManager.registerListener(this, s,SensorManager.SENSOR_DELAY_NORMAL);
}
// sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
// SensorManager.SENSOR_DELAY_NORMAL);
}
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub
}
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
switch(event.sensor.getType()){
//加速度
case Sensor.TYPE_ACCELEROMETER:
TextView tv1=(TextView)findViewById(R.id.tv1);
String x1=String.valueOf(event.values[SensorManager.DATA_X]);
String y1=String.valueOf(event.values[SensorManager.DATA_Y]);
String z1=String.valueOf(event.values[SensorManager.DATA_Z]);
tv1.setText("加速度x:"+x1+"\n"+"加速度y:"+y1+"\n"+"加速度z:"+z1);
break;
//倾斜度
case Sensor.TYPE_ORIENTATION:
TextView tv2=(TextView)findViewById(R.id.tv2);
String x2=String.valueOf(event.values[SensorManager.DATA_X]);
String y2=String.valueOf(event.values[SensorManager.DATA_Y]);
String z2=String.valueOf(event.values[SensorManager.DATA_Z]);
tv2.setText("倾斜度x:"+x2+"\n"+"倾斜度y:"+y2+"\n"+"倾斜度z:"+z2);
break;
//磁力计
case Sensor.TYPE_MAGNETIC_FIELD:
TextView tv3=(TextView)findViewById(R.id.tv3);
String x3=String.valueOf(event.values[SensorManager.DATA_X]);
String y3=String.valueOf(event.values[SensorManager.DATA_Y]);
String z3=String.valueOf(event.values[SensorManager.DATA_Z]);
tv3.setText("磁力计x:"+x3+"\n"+"磁力计y:"+y3+"\n"+"磁力计z:"+z3);
break;
//温度
case Sensor.TYPE_TEMPERATURE:
TextView tv4=(TextView)findViewById(R.id.tv4);
String c=String.valueOf(event.values[SensorManager.DATA_X]);
tv4.setText("Degree:"+c);
break;
}
}
protected void onStop(){
super.onStop();
sensorManager.unregisterListener(this);
}
}
10. android屏幕重力感应如何实现
由于重力感应器在板上安装的方向不同,而移植时需要调整相关的代码。 解决屏幕显示颠倒相关问题,相关的有两部分代码: 1. 内核重力感应器驱动部分,如 MMA7660 1vi drivers/input/gsensor/mma7660.c 在这个文件中寻找相似以下的代码 1axis.y = mma7660_convert_to_int(buffer[MMA7660_REG_X_OUT]); 2axis.x = mma7660_convert_to_int(buffer[MMA7660_REG_Y_OUT]); 3axis.z = mma7660_convert_to_int(buffer[MMA7660_REG_Z_OUT]); 然后按照你自己板的需要,将 X,Y 进行交换,进行相反数运算,将 Z 进行相反运算。 其实可以做得更方便一些,把这几个操作写到 Kconfig 里面,通过宏来控制这些运算,就不用再改代码了。 01#ifdef CONFIG_SWAP_XY02{ 03 typeof(x) __tmp; 04 __tmp = x;05 x = y; 06 y = __tmp;07}08#endif09 10#ifdef CONFIG_REVERSE_X11 x = -x;12#endif13 14#ifdef CONFIG_REVERSE_Y15 y = -y;16#endif 17/* X Y 感应方向有问题,这很容易看出来。 */ 18#ifdef CONFIG_REVERSE_Z 19 z = -z; /* 按正常情况下拿着设备,屏幕斜向上,如果不灵敏,把屏幕朝下试试,如果灵敏了,一般是 Z 反了。 */20#endif 2. Android部分,如果出现菜单显示正常,但是玩重力感应游戏时有问题,这部分就要修改(2.1) 1vim frameworks/base/core/java/android/view/WindowOrientationListener.java 1public void onSensorChanged(SensorEvent event) { 2 float[] values = event.values;