在浅析云计算的三个应用实例例上,INVE有哪些浅析云计算的三个应用实例例?

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
Ansys_综合实例(含40例)..doc 78页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
你可能关注的文档:
··········
··········
第1例 关键点和线的创建实例—正弦曲线
/CLEAR, NOSTART
K,100,0,0,0
CIRCLE,100,1,,,90
KFILL,2,1,4,3,1
K,7,1+3.,0,0
KFILL,7,1,4,8,1
KGEN,2,7,11,1,,1
LSTR,10,15
LSTR,11,16
LANG,5,6,90,,0
LANG,4,5,90,,0
LANG,3,4,90,,0
LANG,2,3,90,,0
BSPLIN,1,17,18,19,20,12
LSEL,U,,,14
LSYMM,X,14
NUMMRG,KP,,,,LOWLCOMB,ALL,,0
/CLEAR, NOSTART
PI=3.14159
*DO,I,0,PI,PI/10.0
BSPLIN,1,2,3,4,5,6
BSPLIN,6,7,8,9,10,11
LSYMM,y,1,2,,,,0
LSYMM,x,3,4,,,,1
以上程序有意没算到2
为了使用几个命令 第2例 工作平面的应用实例—相交圆柱体
[本例提示]通过相交圆柱体的创建,本例主要介绍了工作平面的使用方法。通过本例,读者可以了解并掌握工作平面与所创建体的位置、方向的关系,学习工作平面的设置、偏移、旋转和激活为当前坐标系的方法。
/CLEAR,NOSTART
CYLIND,0.015,0,0,0.08,0,360
CYLIND,0.03,0,0,0.08,0,360
/VIEW,1,1,1,1
/PNUM,VOLU,1
WPOFF,0,0.05,0.03
WPROT,0,60
CYLIND,0.012,0,0,0.055,0,360
CYLIND,0.006,0,0,0.055,0,360
VSEL,S,,,2,3,1
CM,VV1,VOLU
CM,VV2,VOLU
VSBV,VV1,VV2
BLOCK,-0.002,0.002,-0.013,-0.009,0,0.008
WPSTYLE,,,,,,1
VGEN,3,1,,,,120
WPROT,0,0,90
VDELE,1,4,3
VPLOT/REPLOT
第3例 复杂形状实体的创建实例—螺栓
[本例提示]在使用ANSYS软件进行结构分析时,建立实体模型是最复杂最难以掌握的一个过程。因此,有必要熟练掌握实体模型的创建。本例使用ANSYS软件提供的各种建模工具,对复杂形状实体的创建进行了练习。
K,1,0.008,0,-0.002
K,2,0.008,90,-0.0015
K,3,0.008,180,-0.001
K,4,0.008,270,-0.0005
K,5,0.008,0,0
/VIEW,1,1,1,1
LGEN,7,ALL,,,,,0.002
NUMMRG,KP,,,,LOW
K,80,0.008+0.,0.012+0.002/4
K,81,0.008+2*0.,0.012+2*0.002/4
K,82,0.008+3*0.,0.012+3*0.002/4
K,83,0.008+4*0.,0.012+4*0.002/4
K,90,0.008,0,-0.00025
K,91,0.,-0.002
/PNUM,KP,1
/PNUM,LINE,1
LSTR,91,92
LANG,7,90,60,,0
LANG,7,1,120,,0
AL,6,9,10,11
VDRAG,1,,,,,,1,2,3,4,5
/PNUM,KP,0
/PNUM,LINE,0
/PNUM,AREA,1
/PNUM,VOLU,1
CYLIND,0..04,0,360
VSEL,U,,,6
CM,VVV2,VOLU
正在加载中,请稍后...
19页11页18页11页139页152页210页98页您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
双线下承式简支钢桁结合梁桥的ansys分析实例.doc 46页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
双线下承式简支钢桁结合梁桥的ansys分析实例,ansys箱梁桥建模实例,简支钢桁架非破损试验,简支钢桁梁,简支钢桁架,ansys 双线性,ansys桁架建模,ansys桁架分析,ansys 桁架,ansys 桁架 论文
你可能关注的文档:
··········
··········
Ansys课程设计2
以64m双线下承式简支钢桁结合梁桥为研究对象,利用ansys建模分析该结合梁桥在各种工况作用下的变形和应力分布,并进行动力仿真分析,检验其设计的合理性。该桥每个桥墩(台)在横向布置两个支座,支座中心横向间距为11.0m;分析时仅在桥梁两端设置横联(桥门架),若动力分析通不过,可在中间加设两个横联,截面同桥门架;二期恒载按16t计算,活载按中活载计算,双线加载不折减;横梁先按工形截面计算,若应力通不过,可将端横梁改成箱型断面;纵梁外侧桥面板悬臂部分不与横梁连接。该桥的结构轮廓图分别如图1、图2、图3、图4所示。
图1 立面图
图2 下平面图
图3 上平纵联
图4 横截面图
Ansys建模主要采用自底向上的实体建模,即先定义关键点,然后在关键点的基础上连接成线,之后在初步形成的图形上划分网格,生成节点和单元,并定义截面类型,即可得到有限元模型。主桁的上下弦杆为梯形截面箱梁,采用自定义截面的beam188空间梁单元进行模拟。混凝土板采用shell91、横联采用shell63空间板单元,混凝土板的厚度取其平均厚度。其他杆件采用常用截面的beam188空间梁单元进行模拟。按平截面假定考虑主桁下弦杆、纵梁、横梁以及混凝土板相互之间的偏心,考虑上平纵联与横联、主桁上弦杆之间的偏心,不考虑钢与混凝土板间的滑移。主桁各杆之间、横梁与主桁下弦杆之间、纵梁与横梁之间、上平纵联与主桁上弦杆之间、横联与主桁竖杆之间都按刚接处理,混凝土板与纵梁的连接按铰接处理。
单元的平均长度为0.5m,纯钢结构模型一共得到6880个节点,3949个单元。
混凝土板厚:
混凝土板宽:
混凝土板截面面积为
下弦杆、上弦杆的平均高度取为0.6m
钢材的弹性模量取:2.1×1011 Pa,泊松比取:0.3,密度取:7850㎏/m3 。
混凝土假设采用C50,弹性模量取:3.45 ×1010 Pa,泊松比取:0.2,密度取:2400㎏/m3。
重力加速度取:9.8 N/㎏。
一期恒载:钢结构自重+混凝土板自重,混凝土板自重分散到纵梁上为。
二期恒载分散在混凝土板上为。
活载,“中—活载”为,其中单条轨道道渣分布在混凝土板上的总长为64 m,宽为。活载作用考虑三种情况:全桥满布、全桥单线以及半桥满布。
一期恒载由钢结构单独承受,二期恒载和活载由组合结构承受,因此需建立两个有限元模型分5次计算:第一个模型为纯钢结构,作用一期恒载;第二个模型为刚与混凝土的组合结构,按二期恒载、活载作用时分别计算。最后将它们的计算结果进行叠加,得到下面五种种工况:
工况一:一期恒载;
工况二:一期恒载+二期恒载;
工况三:一期恒载+二期恒载+全桥满布;
工况四:一期恒载+二期恒载+全桥单线;
工况五:一期恒载+二期恒载+半桥满布。
ansys模型的建立与求解
3.1 纯钢结构模型
3.1.1 选择单元类型、输入材料参数
ET,1,BEAM188
KEYOPT,1,1,0
KEYOPT,1,2,0
KEYOPT,1,3,0
KEYOPT,1,4,2
KEYOPT,1,6,3
KEYOPT,1,7,1
KEYOPT,1,8,1
KEYOPT,1,9,1
KEYOPT,1,10,0
KEYOPT,1,11,0
KEYOPT,1,12,0
ET,2,SHELL63
KEYOPT,2,1,0
KEYOPT,2,2,0
KEYOPT,2,3,0
KEYOPT,2,5,2
KEYOPT,2,6,0
KEYOPT,2,7,0
KEYOPT,2,8,0
KEYOPT,2,9,0
KEYOPT,2,11,0
R,1,0.016, , , , , ,
ET,3,PLANE82
mp,ex,1,2.1e11
mp,prxy,1,0.3
mp,dens,1,7850
3.1.2 定义梁截面形式
1, BEAM, I, , 5
SECOFFSET, USER, 0, 1.42
SECDATA,0.8,0.8,1.42,0.04,0.04,0.016,0,0,0,0
2, BEAM, I, , 5
SECOFFSET, USER, 0, 1.42
SECDATA,0.36,0.36,1.42,0.02,0.02,0.016,0,0,0,0
6, BEAM, HREC, , 5
SECOFFSET, CENT
SECDATA,0.66,0.578,0.032,0.032,0.032,0.032,0,0,0,0
7, BEAM, HREC, , 5
SECOFFSET, CENT
SECDATA,0.42,0.578,0.016,0.016
正在加载中,请稍后...Ansys_综合实例(含40例)(个人认为很经典)_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&100W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Ansys_综合实例(含40例)(个人认为很经典)
阅读已结束,下载本文需要
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩74页未读,
定制HR最喜欢的简历
你可能喜欢本文将带大家去解读下安卓官方关于方向传感器数据,提供的新方法。熟悉手机传感器开发的朋友对这段代码一定不会陌生吧。
sm.registerListener(this,
sm.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_NORMAL);
sm.registerListener(this,
sm.getDefaultSensor(Sensor.TYPE_GRAVITY),
在高版本的安卓中,Sensor.TYPE_ORIENTATION被画上了横线,那么我们鼠标放上去看下IDE提示是这样写的:The fieldSensor.TYPE_ORIENTATION is deprecated,意思是说这个方法已经被弃用了。当然随着版本的更新,老方法被弃用,自然会有更精确,更高效的方法来代替。那么新方法就是本文要重要介绍的。为了更好解释,首先从传感器基础开始讲起。
一、传感器基础知识
官方文档说的很清楚,Android平台支持三大类的传感器,它们分别是:
a.Motion sensors
b.Environmental sensors
c.Position sensors
从另一个角度划分,安卓的传感器又可以分为基于硬件的和基于软件的。基于硬件的传感器往往是通过物理组件去实现的,他们通常是通过去测量特殊环境的属性获取数据,比如:重力加速度、地磁场强度或方位角度的变化。而基于软件的传感器并不依赖物理设备,尽管它们是模仿基于硬件的传感器的。基于软件的传感器通常是通过一个或更多的硬件传感器获取数据,并且有时会调用虚拟传感器或人工传感器等等,线性加速度传感器和重力传感器就是基于软件传感器的例子。下面通过官方的一张图看看安卓平台支持的所有传感器类型:
使用传感器的话那么首先需要了解的必然是传感器API了,在Android中传感器类是通过Sensor类来表示的,它属于android.hardware包下的类,顾名思义,和硬件相关的类。传感器的API不复杂,包含3个类和一个接口,分别是:
SensorManager
SensorEvent
SensorEventListener
根据官方文档的概述分别简单解释一下这4个API的用处:
SensorManager:可以通过这个类去创建一个传感器服务的实例,这个类提供的各种方法可以访问传感器列表、注册或解除注册传感器事件监听、获取方位信息等。
Sensor:用于创建一个特定的传感器实例,这个类提供的方法可以让你决定一个传感器的功能。
SensorEvent:系统会通过这个类创建一个传感器事件对象,提供了一个传感器的事件信息,包含一下内容,原生的传感器数据、触发传感器的事件类型、精确的数据以及事件发生的时间。
SensorEventListener:可以通过这个接口创建两个回调用法来接收传感器的事件通知,比如当传感器的值发生变化时。
介绍了基础的分类之后,我们再看看传感器的可用性表格,不同的传感器在不同的Android版本之间是有差异的,比如有的在低版本可以用,但在高版本就被弃用,详细的数据依然看看官方的这张表格:
右上角标有1的是在Android1.5版本添加的,并且在Android2.3之后就无法使用。
右上角标有2的是已经过时的。
很明显,我们需要用到的方向传感器TYPE_ORIENTATION就已经过时了,后面再说用什么来替代它。
接着讲一下如何使用常用的传感器:
实例化SensorManager
SensorManager mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
获取设备支持的全部Sensor的List
List&Sensor& deviceSensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);
下面就通过这两个方法看一下手机支持哪些传感器,并以列表数据展示出来,代码很简单:
package com.example.
import java.util.ArrayL
import java.util.L
import android.app.A
import android.content.C
import android.hardware.S
import android.hardware.SensorM
import android.os.B
import android.widget.ArrayA
import android.widget.ListV
public class MainActivity extends Activity {
private SensorManager mSensorM
private ListView sensorListV
private List&Sensor& sensorL
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sensorListView = (ListView) findViewById(R.id.lv_all_sensors);
// 实例化传感器管理者
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
// 得到设置支持的所有传感器的List
sensorList = mSensorManager.getSensorList(Sensor.TYPE_ALL);
List&String& sensorNameList = new ArrayList&String&();
for (Sensor sensor : sensorList) {
sensorNameList.add(sensor.getName());
ArrayAdapter&String& adapter = new ArrayAdapter&String&(this,
android.R.layout.simple_list_item_1, sensorNameList);
sensorListView.setAdapter(adapter);
最后看一下真机的效果图:
了解了传感器的基础知识,下面就具体到我们要重点讲解的Orientation Sensor传感器。
三、OrientationSensor官方给的替代方法
安卓平台提供了2个传感器用于让我们判断设备的位置,分别是地磁场传感器(thegeomagnetic field sensor)和方向传感器(theorientation
sensor)。关于OrientationSensor在官方文档中的概述里有这样一句话:
Theorientation sensor is software-based and derives its data from theaccelerometer and the geomagnetic field sensor.(方向传感器是基于软件的,并且它的数据是通过加速度传感器和磁场传感器共同获得的)
至于具体算法Android平台已经封装好了我们不必去关心实现,下面在了解方向传感器之前我们还需要了解一个重要的概念:传感器坐标系统(Sensor Coordinate System)。
在Android平台中,传感器框架通常是使用一个标准的三维坐标系去表示一个值的。以方向传感器为例,确定一个方向当然也需要一个三维坐标,毕竟我们的设备不可能永远水平端着吧,准确的说android给我们返回的方向值就是一个长度为3的float数组,包含三个方向的值。下面看一下官方提供的传感器API使用的坐标系统示意图:
仔细看一下这张图,不难发现,z是指向地心的方位角,x轴是仰俯角(由静止状态开始前后反转),y轴是翻转角(由静止状态开始左右反转)。下面切入正题,看看如何通过方向传感器API去获取方向。结合上面的图再看看官方提供的方向传感器事件的返回值:
这样就和上面提到的相吻合了,确实是通过一个长度为3的float数组去表示一个位置信息的,并且数组的第一个元素表示方位角(z轴),数组的第二个元素表示仰俯角(x轴),而数组的第三个元素表示翻转角(y轴),最后看看代码怎么写。
依旧参考官方文档Usingthe Orientation Sensor部分内容,首先是实例化一个方向传感器:
mOrientation = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
虽然这样做没错,但是如果你在IDE中写了这样一行代码的话(API低版本可能不会提示),如文中开头说的,发现它已经过期了,但是没关系,我们先用这个看看,后面再介绍代替它的方法。
下面是创建一个自定义传感器事件监听接口:
class MySensorEventListener implements SensorEventListener {
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
float a = event.values[0];
azimuthAngle.setText(a + "");
float b = event.values[1];
pitchAngle.setText(b + "");
float c = event.values[2];
rollAngle.setText(c + "");
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
最后通过SensorManager为Sensor注册监听即可:
mSensorManager.registerListener(new MySensorEventListener(),
mOrientation, SensorManager.SENSOR_DELAY_NORMAL);
当设备位置发生变化时触发监听,界面上的值改变,由于模拟器无法演示传感器效果,就用真机截图看一下,这几个值无时无刻都在变化:
由于我在截图的时候手机是水平端平的,所以后两个值都接近于0,而第一个方位角就代表当前的方向了,好了,现在功能基本算实现了,那么现在就解决一下Sensor类的常量过期的问题。不难发现,在IDE中这行代码是这样的:
mOrientation= mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
既然过期了必定有新的东西去替代它,我们打开源代码可以看到这样的注释:
显而易见,官方推荐我们用SensorManager.getOrientation()这个方法去替代原来的TYPE_ORITNTATION。那我们继续在源码中看看这个方法:
public static float[] getOrientation(float[] R, float values[]) {
* 4x4 (length=16) case:
* 3x3 (length=9) case:
if (R.length == 9) {
values[0] = (float)Math.atan2(R[1], R[4]);
values[1] = (float)Math.asin(-R[7]);
values[2] = (float)Math.atan2(-R[6], R[8]);
values[0] = (float)Math.atan2(R[1], R[5]);
values[1] = (float)Math.asin(-R[9]);
values[2] = (float)Math.atan2(-R[8], R[10]);
再看一下这个方法的注释中的一句话:
第一行讲了这个方法的作用,计算设备的方向基于旋转矩阵,这个旋转矩阵我们当成一种计算方向的算法就OK了,不必深究,下面再看我标出来的这句话,很明显说明了我们通常不需要这个方法的返回值,这个方法会根据参数R[
]的数据填充values[ ]而后者就是我们想要的。既然不需要返回值,那么就是参数的问题了,这两个参数:float[ ] R 和 float[ ] values该怎么获取呢?继续看注释,首先是第一个参数R:
既然这个方法是基于旋转矩阵去计算方向,那么第一个参数R自然就表示一个旋转矩阵了,实际上它是用来保存磁场和加速度的数据的,根据注释我们可以发现让我们通过getRotationMatrix这个方法来填充这个参数R[
],那我们就再去看看这个方法源码,依旧是SensorManager的一个静态方法:
public static boolean getRotationMatrix(float[] R, float[] I,
float[] gravity, float[] geomagnetic) {
// TODO: move this to native code for efficiency
float Ax = gravity[0];
float Ay = gravity[1];
float Az = gravity[2];
final float Ex = geomagnetic[0];
final float Ey = geomagnetic[1];
final float Ez = geomagnetic[2];
float Hx = Ey*Az - Ez*Ay;
float Hy = Ez*Ax - Ex*Az;
float Hz = Ex*Ay - Ey*Ax;
final float normH = (float)Math.sqrt(Hx*Hx + Hy*Hy + Hz*Hz);
if (normH & 0.1f) {
// device is close to free fall (or in space?), or close to
// magnetic north pole. Typical values are
final float invH = 1.0f / normH;
Hx *= invH;
Hy *= invH;
Hz *= invH;
final float invA = 1.0f / (float)Math.sqrt(Ax*Ax + Ay*Ay + Az*Az);
Ax *= invA;
Ay *= invA;
Az *= invA;
final float Mx = Ay*Hz - Az*Hy;
final float My = Az*Hx - Ax*Hz;
final float Mz = Ax*Hy - Ay*Hx;
if (R != null) {
if (R.length == 9) {
R[0] = Hx;
R[1] = Hy;
R[2] = Hz;
R[3] = Mx;
R[4] = My;
R[5] = Mz;
R[6] = Ax;
R[7] = Ay;
R[8] = Az;
} else if (R.length == 16) {
R[10] = Az;
R[11] = 0;
R[12] = 0;
R[13] = 0;
R[14] = 0;
R[15] = 1;
if (I != null) {
// compute the inclination matrix by projecting the geomagnetic
// vector onto the Z (gravity) and X (horizontal component
// of geomagnetic vector) axes.
final float invE = 1.0f / (float)Math.sqrt(Ex*Ex + Ey*Ey + Ez*Ez);
final float c = (Ex*Mx + Ey*My + Ez*Mz) * invE;
final float s = (Ex*Ax + Ey*Ay + Ez*Az) * invE;
if (I.length == 9) {
} else if (I.length == 16) {
I[3] = I[7] = I[11] = I[12] = I[13] = I[14] = 0;
I[15] = 1;
依旧是4个参数,请观察30~41行之间的代码,不难发现这个旋转矩阵无非就是一个3*3或4*4的数组,再观察一下if语句块中的代码,不难发现给数组元素依次赋值,而这些值是从哪里来的呢?我们29行倒着看,直到第4行,不难发现其实最后的数据源是通过这个方法的后两个参数提供的,即:float[]
gravity, float[]geomagnetic,老规矩,看看这两个参数的注释:
到这里应该就清晰了吧,分别是从加速度传感器和地磁场传感器获取的值,那么很明显,应当在监听中的回调方法onSensorChanged中去获取数据,同时也验证了上面的判断方向需要两个传感器的说法,分别是:加速度传感器(Sensor.TYPE_ACCELEROMETER)和地磁场传感器(TYPE_MAGNETIC_FIELD)。
说完了getRotationMatrix方法的后两个参数,那么前两个参数R和I又该如何定义呢?其实很简单,第一个参数R就是getOrientation()方法中需要填充的那个数组,大小是9。而第二个参数I是用于将磁场数据转换进实际的重力坐标系中的,一般默认设置为NULL即可。到这里关于方向传感器基本就已经介绍完毕,最后看一个完整的例子:
package com.example.
import android.app.A
import android.content.C
import android.hardware.S
import android.hardware.SensorE
import android.hardware.SensorEventL
import android.hardware.SensorM
import android.os.B
import android.util.L
import android.widget.TextV
public class MainActivity extends Activity {
private SensorManager mSensorM
private S // 加速度传感器
private S // 地磁场传感器
private TextView azimuthA
private float[] accelerometerValues = new float[3];
private float[] magneticFieldValues = new float[3];
private static final String TAG = "---MainActivity";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 实例化传感器管理者
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
// 初始化加速度传感器
accelerometer = mSensorManager
.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
// 初始化地磁场传感器
magnetic = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
azimuthAngle = (TextView) findViewById(R.id.azimuth_angle_value);
calculateOrientation();
protected void onResume() {
// TODO Auto-generated method stub
// 注册监听
mSensorManager.registerListener(new MySensorEventListener(),
accelerometer, Sensor.TYPE_ACCELEROMETER);
mSensorManager.registerListener(new MySensorEventListener(), magnetic,
Sensor.TYPE_MAGNETIC_FIELD);
super.onResume();
protected void onPause() {
// TODO Auto-generated method stub
// 解除注册
mSensorManager.unregisterListener(new MySensorEventListener());
super.onPause();
// 计算方向
private void calculateOrientation() {
float[] values = new float[3];
float[] R = new float[9];
SensorManager.getRotationMatrix(R, null, accelerometerValues,
magneticFieldValues);
SensorManager.getOrientation(R, values);
values[0] = (float) Math.toDegrees(values[0]);
Log.i(TAG, values[0] + "");
if (values[0] &= -5 && values[0] & 5) {
azimuthAngle.setText("正北");
} else if (values[0] &= 5 && values[0] & 85) {
// Log.i(TAG, "东北");
azimuthAngle.setText("东北");
} else if (values[0] &= 85 && values[0] &= 95) {
// Log.i(TAG, "正东");
azimuthAngle.setText("正东");
} else if (values[0] &= 95 && values[0] & 175) {
// Log.i(TAG, "东南");
azimuthAngle.setText("东南");
} else if ((values[0] &= 175 && values[0] &= 180)
|| (values[0]) &= -180 && values[0] & -175) {
// Log.i(TAG, "正南");
azimuthAngle.setText("正南");
} else if (values[0] &= -175 && values[0] & -95) {
// Log.i(TAG, "西南");
azimuthAngle.setText("西南");
} else if (values[0] &= -95 && values[0] & -85) {
// Log.i(TAG, "正西");
azimuthAngle.setText("正西");
} else if (values[0] &= -85 && values[0] & -5) {
// Log.i(TAG, "西北");
azimuthAngle.setText("西北");
class MySensorEventListener implements SensorEventListener {
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
accelerometerValues = event.
if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
magneticFieldValues = event.
calculateOrientation();
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
本文详细介绍了官方提供的方向传感器新方法,对于具体的精度和效率的提升,本人没有进一步去比较,希望尝试过的朋友能和大家一起讨论下。后续工作会把两种方法对比结果补充进来~~~
参考:http://www.bkjia.com/Androidjc/924827.html
Android Orientation Sensor(方向传感器)详解与应用
本篇blog是我的“Android进阶”的第一篇文章,从初学Android到现在断断续续也有4个多月时间了,也算是有了一些自己的心得体会,也能自己独立做一些东西了,这都要感谢我...
Sensor传感器相关的方法以及使用套路
Sensor传感器相关的方法以及使用套路
从2中的例子我们可以大概地总结下获取Sensor传感器以及获取传感器相关的一些信息流程如下:
1)Sensor传感器的相关方法
Step 1:获得传感器...
SensorManager传感器使用小结
SensorManager是Android手机传感器的管理器类,它是一个抽象类。手机中常用的传感器在Android2.3 gingerbread系统中,google提供了11种传感器供应用层使用。#d...
[RK3288][Android6.0] 设置中通过Sensor旋转显示画面小结
Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92Settings -& Display有个选项控制旋转屏幕时内容是否跟着旋转
这个功能是通过获...
Android-Gsensor屏幕旋转
关于Rotate的实现:
系统启动windowManger.java时,它会启动phoneWindowManager.java,该类有一个内部类myOrientationListener扩展自...
查找到关于gsensor的驱动把x和y的值取反329和330行
kernel/drivers/input/sensors/accel/kxtj9.c
x = -sensor_convert_d...
关于Rotate的实现:
系统启动windowManger.java时,它会启动phoneWindowManager.java,该类有一个内部类myOrientationListener扩展自...
我本人是做驱动的,由于公司android方面只有我一个人,所以framework也是我的活,痛苦啊。
公司产品没有任何sensor默认横屏,好多APK运行时都会强制翻转成竖屏。各种百度查资料,各种尝...
Android镜像翻转指的是将屏幕进行水平的翻转,达到所有内容显示都会反向的效果,就像是在镜子中看到的界面一样。这种应用的使用场景相对比较受限,主要用在一些需要使用Android手机界面进行镜面投影的...
http://www.cnblogs.com/bpasser/archive//2214517.html
带有g-sensor的Android设备上可通过API获取到...
没有更多推荐了,}

我要回帖

更多关于 ar技术应用实例 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信