在线免费观看成年人视频-在线免费观看国产-在线免费观看国产精品-在线免费观看黄网站-在线免费观看精品

產品分類

當前位置: 首頁 > 傳感測量產品 > 工業傳感器 > 力傳感器

類型分類:
科普知識
數據分類:
力傳感器

android 加速傳感器 重力傳感器:android 加速度傳感器,重力傳感器,線性加速度傳感器

發布日期:2022-10-09 點擊率:93


android 加速傳感器 重力傳感器:android <a title=加速度傳感器,重力傳感器,線性加速度傳感器 第1張" title="android 加速傳感器 重力傳感器:android 加速度傳感器,重力傳感器,線性加速度傳感器 第1張-傳感器知識網"/>

android 加速傳感器 重力傳感器:android 加速度傳感器,重力傳感器,線性加速度傳感器

加速度傳感器檢測物體傾角的原理
檢物體傾角的一種常用方法是對陀螺儀輸出的角速度進行積分。雖然這種方法直截了當,但誤差會隨著積分時間的增加而快速累積。在某些應用中,若整個時間范圍內物體運動緩慢(忽略慣性力等因素的影響,物體只受重力作用),那么可以使用加速度計來測量物體的傾斜角度。該方法利用重力矢量及其在加速度計軸上的投影來確定傾斜角度。
以兩輪平衡小車(倒立擺模型)為例,當檢測到傾角存在時要控制小車以一定的加速度運動,才能維持平衡而不至于倒下。因此傾角的測量成為控制小車直立的關鍵。而在實際小車運動過程

android 加速傳感器 重力傳感器:Android基于Sensor感應器獲取重力感應加速度的方法

package uni.sensor;
import java.util.Iterator;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.util.Log;
public class SensorDemoActivity extends Activity {

//設置LOG標簽
 private static final String TAG="sensor";
 private SensorManager sm;
 @Override
 public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//創建一個SensorManager來獲取系統的傳感器服務
sm=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
//選取加速度感應器
int sensorType=Sensor.TYPE_ACCELEROMETER;

sm.registerListener(myAccelerometerListener,sm.getDefaultSensor(sensorType),SensorManager.SENSOR_DELAY_NORMAL);
 }

final SensorEventListener myAccelerometerListener=new SensorEventListener(){
//復寫onSensorChanged方法
public void onSensorChanged(SensorEvent sensorEvent){
 if(sensorEvent.sensor.getType()==Sensor.TYPE_ACCELEROMETER){
Log.i(TAG,"onSensorChanged");
//圖解中已經解釋三個值的含義
float X_lateral=sensorEvent.values[0];
float Y_longitudinal=sensorEvent.values[1];
float Z_vertical=sensorEvent.values[2];
Log.i(TAG,"
heading "+X_lateral);
Log.i(TAG,"
pitch "+Y_longitudinal);
Log.i(TAG,"
roll "+Z_vertical);
 }
}
//復寫onAccuracyChanged方法
public void onAccuracyChanged(Sensor sensor , int accuracy){
 Log.i(TAG, "onAccuracyChanged");
}
 };
 public void onPause(){

sm.unregisterListener(myAccelerometerListener);
super.onPause();
 }
}

android 加速傳感器 重力傳感器:Android開發之重力傳感器

重力傳感器與方向傳感器的開發步驟類似,只要理清了期中的x,y,z的值之后就可以根據他們的變化來進行編程了,首先來看一副圖

假設當地的重力加速度值為g
當手機正面朝上的時候,z的值為q,反面朝上的時候,z的值為-g
當手機右側面朝上的時候,x的值為g,右側面朝上的時候,x的值為-g
當手機上側面朝上的時候,y的值為g,右側面朝上的時候,y的值為-g
了解了重力傳感器中X,Y,Z的含義之后下面我們就開始學習如何使用
首先我們創建一個傳感器管理器和一個傳感器監聽器,管理器用來管理傳感器以及創建各種各樣的傳感器,監聽器用來監視傳感器的變化并且進行相應的操作
private SensorManager sensorManager;
private MySensorEventListener mySensorEventListener;
mySensorEventListener=new MySensorEventListener();//這個監聽器當然是我們自己定義的,在重力感     應器感應到手機位置有變化的時候,我們可以采取相應的操作,這里緊緊是將x,y,z的值打印出來
private final class MySensorEventListener implements  SensorEventListener{

@Override
//可以得到傳感器實時測量出來的變化值
public void onSensorChanged(SensorEvent event) {
//重力傳感器
if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){
float x=event.values[SensorManager.DATA_X];
float y=event.values[SensorManager.DATA_Y];
float z=event.values[SensorManager.DATA_Z];
//tv_accelerometer是界面上的一個TextView標簽,不再贅述
tv_orientation.setText("Orientation:"+x+","+y+","+z);
}
}

我們在onResume方法中創建重力傳感器,并向系統注冊監聽器
protected void onResume() {
Sensor sensor_accelerometer=sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensorManager.registerListener(mySensorEventListener,sensor_accelerometer,   SensorManager.SENSOR_DELAY_UI);

super.onResume();
}
最后我們在onPause()中注銷所有傳感器的監聽,釋放重力感應器資源!
protected void onPause() {
/注銷所有傳感器的監聽
sensorManager.unregisterListener(mySensorEventListener);
super.onPause();
}
到此,有關重力傳感器的介紹完畢!
android 加速傳感器 重力傳感器:android 加速度傳感器,重力傳感器,線性加速度傳感器  第2張

android 加速傳感器 重力傳感器:Android的重力傳感器(3軸加速度傳感器)簡單實例

重力感應主要是依靠手機的加速度傳感器(accelerometer)來實現

在Android的開發中一共有八種傳感器但是不一定每一款真機都支持這些傳感器。因為很多功能用戶根本不care的所以可能開發商會把某些功能屏蔽掉。還是得根據真機的實際情況來做開發,今天我們主要來討論加速度傳感器的具體實現方式。

傳感器名稱如下:

加速度傳感器(accelerometer)
陀螺儀傳感器(gyroscope)
環境光照傳感器(light)
磁力傳感器(magnetic field)
方向傳感器(orientation)
壓力傳感器(pressure)
距離傳感器(proximity)
溫度傳感器(temperature)

上面的是程序的運行圖

遇到的問題:
1、當在與球相同的布局里面調用TextView時,球就不能移動了。最后我把球和數據分離開,用兩個布局處理的。
2、不明白super.setframe()函數到底是什么意思
有哪位大神看懂了,告訴我一下

這個是主程序代碼:
package cn.itcast.accelerometer;
import cn.itcast.accelerometer.view.BallView;
import android.app.Activity;
import android.graphics.Color;
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.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class AccelerometerActivity extends Activity {
private static final float MAX_ACCELEROMETER=9.81f;
private SensorManager sensorManager;
private BallView ball;
private boolean success=false;
private boolean init=false;
private int container_width=0;
private int container_height=0;
private int ball_width=0;
private int ball_height=0;
private TextView prompt;
private TextView tv1;
private TextView tv2;
private TextView tv3;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//獲取感應器管理器
sensorManager=(SensorManager) getSystemService(SENSOR_SERVICE);
prompt=(TextView) findViewById(R.id.ball_prompt);
tv1=(TextView)findViewById(R.id.tv1);
tv2=(TextView)findViewById(R.id.tv2);
tv3=(TextView)findViewById(R.id.tv3);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {//ball_container控件顯示出來后才能獲取其寬和高,所以在此方法得到其寬高
super.onWindowFocusChanged(hasFocus);
if(hasFocus && !init){
View container=findViewById(R.id.ball_container);
container_width=container.getWidth();
container_height=container.getHeight();
ball=(BallView) findViewById(R.id.ball);
ball_width=ball.getWidth();
ball_height=ball.getHeight();
moveTo(0f, 0f);
init=true;
}
}
@Override
protected void onResume() {
Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);//獲取重力加速度感應器
success=sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_GAME);//注冊listener,第三個參數是檢測的精確度
super.onResume();
}

@Override
protected void onPause() {
if(success) sensorManager.unregisterListener(listener);
super.onPause();
}
private SensorEventListener listener=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {

if (!init) return ;
float x=event.values[SensorManager.DATA_X];
float y=event.values[SensorManager.DATA_Y];
float z=event.values[SensorManager.DATA_Z];
prompt.setText("X=" + x + ",Y=" + y + ", Z=" + z);
//當重力x,y為0時,球處于中心位置,以y為軸心(固定不動),轉動手機,x會在(0-9.81)之間變化,負號代表方向
moveTo(-x, y);//x方向取反

        if(x>0){
tv1.setTextColor(Color.WHITE);
tv1.setText("向左");
}

        if(x

        if(y

        if(z<0){         tv3.setTextColor(Color.YELLOW);         tv3.setText("向下");         }                 } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } }; private void moveTo(float x, float y) {        int max_x=(container_width - ball_width) / 2;//在x軸可移動的最大值        int max_y=(container_height - ball_height) / 2;//在y軸可移動的最大值        //手機沿x、y軸垂直擺放時,自由落體加速度最大為9.81,當手機沿x、y軸成某個角度擺放時,變量x和y即為該角度的加速度        float percentageX=x / MAX_ACCELEROMETER;//得到當前加速度的比率,如果手機沿x軸垂直擺放,比率為100%,即球在x軸上移動到最大值        float percentageY=y / MAX_ACCELEROMETER;                        int pixel_x=(int) (max_x * percentageX);//得到x軸偏移量        int pixel_y=(int) (max_y * percentageY);//得到y軸偏移量        //以球在中心位置的坐標為參考點,加上偏移量,得到球的對應位置,然后移動球到該位置                int x3=max_x + pixel_x;//屏幕中心位置+x軸偏移        int y3=max_y + pixel_y;//屏幕中心位置+y軸偏移                ball.moveTo(x3, y3);                  } } 球的代碼移動: package cn.itcast.accelerometer.view; import android.content.Context; import android.util.AttributeSet; import android.widget.ImageView; public class BallView extends ImageView { public BallView(Context context) { super(context); }    public BallView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public BallView(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);    }    public void moveTo(int x, int y) {//沒有弄明白什么意思,誰懂了告訴我一下啊,我加一個TextView,球就不能移動了    itas109        super.setframe(x, y, x + getWidth(), y + getHeight());//繪制視圖,由左上角與右下角確定視圖矩形位置    } }   整個程序的下載地址:

下一篇: PLC、DCS、FCS三大控

上一篇: 電氣控制線路圖控制原

人人妻人人澡人人爽| 浪潮AV色综合久久天堂| 老熟女与小伙偷欢视频| 欧美日韩一区精品视频一区二区| 日韩少妇白浆无码系列| 亚洲AV电影天堂男人的天堂| 亚洲综合无码一区二区三区不卡| J日本成熟IPHONE69| 国产精品欧美福利久久| 久久久久久久精品国产亚洲| 秋霞A级毛片在线看| 小雪你的奶好大把腿张开| 野花韩国视频免费高清3| W永久939W乳液| 国产精品久久国产三级国不卡顿| 久久久久国色AV免费看图片| 欧洲美女与动交ZOZ0Z| 午夜成人鲁丝片午夜精品| 岳胀耸的雪乳奶水| 顶级欧美熟妇XXXXX欧美精品| 狠狠躁夜夜躁人人爽天天BL| 欧美成人黑人XX视频免费观看| 特黄特色三级在线观看| 夜夜躁狠狠躁日日躁视频| 成人无码精品一区二区三区| 精品久久久无码人妻中文字幕豆芽| 男女爽爽午夜18禁影院免费| 无码精品人妻一区二区三区漫画| 伊人精品久久久久7777| 妇女被深耕过后的变化| 久久精品无码一区二区无码| 日韩Av无码一区二区| 亚洲色偷拍区另类无码专区| 成人欧美一区二区三区白人| 精品无码久久久久国产| 日韩精品成人一区二区三区| 亚洲熟妇另类AV老熟女| 丁香花在线电影小说| 久久久一本精品99久久精品| 他用嘴巴含着我奶头吸怎么办| 一区二区三区在线 | 欧| 国产CHINESEHDXXXX宾馆TUBE| 久久中文字幕人妻丝袜系列| 天天躁日日躁AAAAXXXX| 最新高清无码专区| 含羞草传媒免费进入APP老版本 | 亚洲精品无码久久久影院相关影片 | 国产SM主人调教女M视频| 老赵揉搓苏清雅双乳| 香港三级日本三级A视频| MAC小辣椒877正品| 久久99这里只有是精品6| 四虎永久在线精品免费一区二区| 中文字幕人妻被公上司喝醉| 国产无遮挡吃胸膜奶免费看| 日本免费一区二区三区| 一二三四免费BD高清视频| 国产精品美女久久久浪潮AV| 欧美性猛交XXXX黑人| 亚洲性色AV片在线观看网址 | 把腿张开自慰给我看| 久久久WWW免费人成精品| 无码超级大爆乳在线播放| H无遮挡H无码黄3D漫画| 久久久噜噜噜久久中文福利| 无码无套少妇毛多69XXX| 边做边爱免费视频| 免费AV片在线观看无需播放器 | 精品亚洲国产成人AV不卡| 少妇人妻偷人精品视频| A级国产乱理伦片在线观看 | 亚洲欧洲闷骚AV少妇影院| 国产成人亚洲精品青草| 人妻无奈被迫屈辱1-9| 在线国内永久免费CRM| 黑人精品一区二区| 熟女CHACHACHA性少妇| www.五月婷婷.com| 麻豆果冻传媒新剧国产短视频| 亚洲AV无码专区国产乱码APP| 大地韩国日本HD免费完整| 欧美、另类亚洲日本一区二区| 亚洲夜夜性无码国产盗摄| 国产无遮挡裸体免费视频| 色综合AV男人的天堂伊人| YEEZY380蜜桃粉满天| 免费看成熟丰满少妇AⅤ无码精品| 亚洲精品成人网站在线观看| 国产男女猛烈无遮挡免费网站| 少妇99久久黑人| 草草最新发地布地址①·| 欧美人C交ZOOZOOXX| 祖母和おばあちゃん的区别| 久久人妻AV无码中文专区| 亚洲精品成人久久久| 国色天香一卡2卡3卡4卡| 无码AV中文字幕久久AV| 够了够了到高C了好多水视频| 日本熟妇极品FREE| 白白嫩嫩又小又紧| 奇米影视7777久久精品| A级毛片免费网站| 农村人乱弄一区二区的处罚方式| 永久免费的啪啪网站免费观看浪潮| 精品欧美H无遮挡在线看中文| 亚洲 中文 欧美 日韩 在线| 国产精品麻豆欧美日韩WW| 为什么放进去女的就老实了| 国产69精品久久久久99尤物| 色狠狠色狠狠综合天天| 成都私人家庭影院| 日本护士毛茸茸高潮| 波多野结衣乳巨码无在线| 热99RE6久精品国产首页青柠 | 69无人区码一码二码三码区别| 免费高清A级毛片在线播放| 在线观看国产一区二区三区| 麻豆我精产国品一二三产区区别| 在线观看成人无码中文AV天堂不 | 国内精品免费视频自在线拍| 亚洲av网站在线观看| 国内精品人妻久久毛片APP| 亚洲а∨天堂男人色无码蜜臀69| 狠狠色丁香久久婷婷综合五月| 亚洲丰满多毛XXXⅩ熟妇| 精品无码一区二区三区爱欲| 亚洲愉拍自拍欧美精品| 久拍国产在线观看| 18国产精品白浆在线观看免费| 女人爽到高潮的免费视频| FREE乌克兰嫩交HD| 人人澡人人妻人人爽人人蜜桃麻豆| 波多野结衣片全部电影| 色婷婷五月综合亚洲影院| 国产成人无码AⅤ片在线观看导航 国产成人无码AⅤ片在线观看 | 涩爱AV挺进少妇张开双暴躁 | 免费AV片大尺度在线观看| 中文字幕无码不卡一区二区三区| 男生把手放进我内裤揉摸好爽| H纯肉无码精品动漫在线观看| 日本极品少妇XXXX| 国产成人综合日韩精品无码| 亚洲AⅤ永久无码一区二区三区| 国内精品伊人久久久久AV| 亚洲性无码AV中文字幕| 妺妺窝人体色www聚色窝仙踪| JLZZJLZZ全部女高潮| 色噜噜狠狠色综合无码AV天堂| 国产精品无码久久久久| 亚洲国产精品久久久天堂不卡海量 | 欧美人与牲禽ⅩXXX伦交| 成年无码动漫AV片在线尤物| 玩弄放荡人妻一区二区三| 好嗨哟片在线观看| 在线精品国产成人综合| 人与畜禽共性关系的重要性有哪些| 国产成人无码AV一区二区在线观| 亚洲AV永久无码成人私密按摩| 久久天天躁夜夜躁狠狠85| AV乱码AV免费AⅤ成人| 色欲天天天综合网| 黑人又大又粗又硬XXXXX| 在公交车上弄到高C了公交车最后| 欧美性狂猛BBBBBBXXXXXX| 国产成人精品一区二区三区无码 | 老牛精品亚洲成AV人片| ぱらだいす天堂中文网WWW在线| 特黄三级又爽又粗又大| 极品尤物一区二区三区| 777成了乱人视频| 少妇性饥渴VIDEOS| 精品午夜福利1000在线观看 | 亚洲色欲AV无码成人专区| 欧美成人精品三级网站下载| 国产A级毛多妇女视频| 亚洲欧美中文日韩V在线观看不卡| 男人又粗又黑又硬的东西| 国产CHINESE男男GAYGAY网站| 亚洲精品国产V片在线观看| 女的用嘴巴吃鸡会得HPV| 国产成人久久精品二区三区小说| 亚洲国产欧美一区二区三区| 欧美成人精品高清在线观看 | 无码无套少妇毛多18PX| 巨大黑人XXXXX高潮| 成熟交BGMBGMBGM图片| 亚洲免费福利视频| 人人妻人人澡人人爽人人正品| 韩国理论电费2023最| 99精产国品一二三产区区| 我把我的肥岳日出水来多少集| 久久久久亚洲AV成人片一区| 吃饭时把腿张开故意让公| 亚洲精品无码久久久久AV老牛| 欧洲熟妇的性久久久久久| 果冻传媒播放观看免费| А√8天堂中文官网资源| 亚洲精品狼友在线播放| 日韩精品一区二区三区色欲AV| 久久99精品久久久久久|