歡迎來到裝配圖網! | 幫助中心 裝配圖網zhuangpeitu.com!
裝配圖網
ImageVerifierCode 換一換
首頁 裝配圖網 > 資源分類 > DOC文檔下載  

基于安卓平臺的指南針的實現課程設計報告.doc

  • 資源ID:116776786       資源大?。?span id="j5jilvh" class="font-tahoma">1.67MB        全文頁數:26頁
  • 資源格式: DOC        下載積分:15積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預覽文檔經過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

基于安卓平臺的指南針的實現課程設計報告.doc

HEFEI UNIVERSITY 課程設計報告系 別 電子信息與電氣工程系 專 業(yè) 10級通信(2)班 姓 名 麻主席、張知奧、章飛 題 目 基于安卓平臺的指南針的實現 學 號 1005073020 指 導 老 師 李祎 完 成 時 間 2014年1月4日 摘要:基于安卓平臺實現指南針的基本功能。本文主要介紹本組如何通過模擬器在電腦上實現指南針應用的主要過程關鍵詞:安卓、傳感器、指南針安卓簡介Android一詞的本義指“機器人”,同時也是Google于2007年11月5日宣布的基于Linux平臺的開源手機操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應用軟件組成,號稱是首個為移動終端打造的真正開放和完整的移動軟件。目前,最新版本為Android 2.4 Gingerbread和Android 3.0 Honeycomb。 Android是基于Linux開放性內核的操作系統(tǒng),是Google公司在2007年11月5日公布的手機操作系統(tǒng)。 Android早期由原名為Android的公司開發(fā),谷歌在2005年收購Android.Inc后,繼續(xù)對Android系統(tǒng)開發(fā)運營,它采用了軟件堆層(software stack,又名軟件疊層)的架構,主要分為三部分。底層Linux內核只提供基本功能,其他的應用軟件則由各公司自行開發(fā),部分程序以Java編寫。 2011年初數據顯示,僅正式上市兩年的操作系統(tǒng)Android已經超越稱霸十年的塞班系統(tǒng),使之躍居全球最受歡迎的智能手機平臺?,F在,Android系統(tǒng)不但應用于智能手機,也在平板電腦市場急速擴張,在智能MP4方面也有較大發(fā)展。采用Android系統(tǒng)主要廠商包括臺灣的HTC,(第一臺谷歌的手機G1由HTC生產代工)美國摩托羅拉,SE等,中國大陸廠商如:魅族(M9),華為、中興、聯(lián)想、藍魔等。搭建Android開發(fā)平臺1 下載軟件nJDK1.5+到http:/ 安裝軟件和配置環(huán)境2.1 安裝JDK下載好的JDK是一個可執(zhí)行安裝程序,雙擊安裝。假設安裝路徑為:C:/ProgramFiles/Java/jdk1.6.0_05(當然其他路徑也可以)。JDK安裝完成之后要設置系統(tǒng)環(huán)境變量:我的電腦點右鍵,選擇“屬性”,選擇“高級”標簽,進入環(huán)境變量設置。環(huán)境變量設置,分別設置三個環(huán)境變量:JAVA_HOME、path變量、classpath變量。2.1.1 設置JAVA_HOME在系統(tǒng)環(huán)境變量那一欄中點-新建JAVA_HOME(JAVA_HOME指向的是JDK的安裝路徑)。 變量名:JAVA_HOME;變量值:C:/ProgramFiles/Java/jdk1.6.0_05設置JAVA_HOME量的目的:l為了方便引用,比如,JDK安裝C:/ProgramFiles/Java/jdk1.6.0_05目錄里,則設置JAVA_HOME為該目錄路徑,那么以后要使用這個路徑的時候,只需輸入%JAVA_HOME%即可,避免每次引用都輸入很長的路徑串;l歸一原則,當JDK路徑改變的時候,僅需更改JAVA_HOME的變量值即可,否則,就要更改任何用絕對路徑引用JDK目錄的文檔,要是萬一沒有改全,某個程序找不到JDK,后果是可想而知的-系統(tǒng)崩潰!l第三方軟件會引用約定好的JAVA_HOME變量,不然,你不能正常使用該軟件.2.1.2 設置path變量在系統(tǒng)變量里找到path變量,選擇-編輯;(里面已經有很多的變量值,是在變量值的最前面或其他位置加上%JAVA_HOME%/bin;)。變量名:path;變量值:%JAVA_HOME%/bin;目的:使得我們能夠在系統(tǒng)中的任何地方運行java應用程序,比如javac、java、javah等,這就要找到我們安裝JDK的目錄,比如我們的JDK安裝在C:/ProgramFiles/Java/jdk1.6.0_05目錄下,那么在C:/ProgramFiles/Java/jdk1.6.0_05/bin目錄下就是我們常用的java應用程序,我們就需要把C:/jdk1.6.0/bin這個目錄加到path環(huán)境變量里面。2.1.3 設置classpath環(huán)境在系統(tǒng)環(huán)境變量那一欄中點-新建classpath。變量名:classpath;變量值:.;%JAVA_HOME%/lib/;%JAVA_HOME%/jre/lib/(注意,CLASSPATH最前面是有個“.”的,表示當前目錄,這樣當我們運行javaAClass的時候,系統(tǒng)就會先在當前目錄尋找AClass文件了。)2.1.4 JDK環(huán)境測試配置完成下面寫一個簡單的java程式來測試J2SDK是否已安裝成功:publicclassHelloWorld publicstaticvoidmain(Stringargs) System.out.println(Helloworld!); 將程式保存為文檔名為HelloWorld.java的文檔。打開命令提示符窗口,進入到HelloWorld.java所在目錄,鍵入下面的命令:javacHelloWorld.javajavaHelloWorld2.2 安裝Eclipse將下載的Eclipse壓縮包解壓到相應的安裝目錄即可。2.3 配置Android環(huán)境2.3.1 安裝AndroidDevelopmentTools(ADT)插件啟動eclipse,選擇:HelpSoftwareUpdatesFindandInstall.在彈出的對話框中選擇第二個選項:Searchfornewfeaturestoinstall,點擊next,進入下一步。選擇NewRemoteSite,在彈出的對話框中鍵入遠程站點的名字(任意,如AndroidPlugin),以及站點的URL:https:/dl- 應用AndroidSDK到eclipse在Eclipse工具欄中,選擇:Window-Preferences.左邊菜單中選中android,在右邊瀏覽框中選擇sdk的解壓目錄作為sdklocation,點擊Apply,然后點擊OK即可3 參考資料:http:/ Activity_main.xml程序: 此時acticity_main顯示界面為二、 MainActivity.java程序:package pass;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.animation.Animation; import android.view.animation.RotateAnimation; import android.widget.ImageView; public class MainActivity extends Activity implements SensorEventListener private ImageView imageView; SensorManager mSensorManager; private float currentDegree=0f; Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView=(ImageView)findViewById(R.id.Imageview); mSensorManager=(SensorManager)getSystemService(SENSOR_SERVICE); SuppressWarnings(deprecation)Override protected void onResume() mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_GAME); super.onResume(); Override protected void onPause() mSensorManager.unregisterListener(this); super.onPause(); Override protected void onStop() mSensorManager.unregisterListener(this); super.onStop(); Override public void onAccuracyChanged(Sensor arg0, int arg1) SuppressWarnings(deprecation)Override public void onSensorChanged(SensorEvent event) int sensortype=event.sensor.getType(); switch(sensortype) case Sensor.TYPE_ORIENTATION: float degree=event.values0; RotateAnimation ra=new RotateAnimation(currentDegree,-degree,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f); ra.setDuration(200); imageView.startAnimation(ra); currentDegree=-degree; break; 3、 compass Manifest.xml 其中值得注意的有以下幾點:1. compass的project2. Imageview添加傳感器的類型各種類型的傳感器:1.加速度傳感器 Sensor.TYPE_ACCELEROMETER:返回手機設備在X,Y,Z三個方向上的加速度.2.磁場傳感器,Sensor.TYPE_MAGNETIC_FIELD:,返回周圍磁場在手機的X,Y,Z方向上的影響(磁場分量).3.陀螺儀感應器:Sensor.TYPE_GYROSCOPE:4.光線傳感器 Sensor.TYPE_LIGHT:返回周圍光的強度,單位是勒克斯lx5.距離感應器Sensor.TYPE_PROXIMITY: 6.重力傳感器Sensor.TYPE_GRAVITY:7.線性加速傳感器Sensor.TYPE_LINEAR_ACCELERATION:8.旋轉向量傳感器Sensor.TYPE_ROTATION_VECTOR:9.方向傳感器:Sensor.TYPE_ORIENTATION:返回三個值,第一個為和正北方向的角度,沿Z軸旋轉,0表示正北,90度表示正東,180表示正南,270表示正西.第二個值繞X軸傾斜,水平屏幕向上,返回0,抬起手機頂部時,值開始減小,范圍0-180,從手機底部開始抬起,值范圍為0180.第三個值為手機左側或者右側翹起的高度.沿著Y軸傾斜,范圍是-9090,水平放置為0,從左側抬起,會從0到-90,從右側開始抬起,范圍為090.10.Sensor.TYPE_TEMPERATURE:溫度傳感器,返回攝氏度.11.Sensor.TYPE_PRESSURE壓力傳感器,代表手機設備周圍壓力的大小雖然AndroidSDK定義了十多種傳感器,但并不是每一部手機都完全支持這些傳感器。傳感器的使用Android提供的API中對于不同傳感器的調用都是用同一個接口,這樣編程起來顯得非常簡單。先得到傳感器的控制器,然后注冊你感興趣的感應事件,代碼如下SensorManager SensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); /注冊方位角傳感器,感應事件的周期是0.12s產生一次報告 mSensorManager.registerListener(mListener, SensorManager.SENSOR_ORIENTATION, SensorManager.SENSOR_DELAY_NORMAL );如果想要獲得其他感應事件,只需要修改第二個參數為相應的傳感器對應的枚舉數值,第三個參數是感應事件的頻率,設置感應事件頻率,有四種頻率模式可選,每個相差0.04s。然后設置一個監(jiān)聽器,利用監(jiān)聽接口onSensorChanged來讀取具體感應的內容public void onSensorChanged(int sensor, float values) if (Config.DEBUG) Log.d(TAG, 極方位角azimuth, + values0); Log.d(TAG, 傾斜角pitch, + values1); Log.d(TAG, 轉角roll, + values2); 指南針應用代碼片段,雙擊復制package com.ijowett.example.SystemService; import java.util.List; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.hardware.Sensor; import android.hardware.SensorListener; import android.hardware.SensorManager; import android.os.Bundle; import android.util.Config; import android.util.Log; import android.view.View; public class Compass extends Activity private static final String TAG = Compass; private SensorManager mSensorManager; private SampleView mView; private float mValues; private final SensorListener mListener = new SensorListener() public void onSensorChanged(int sensor, float values) if (Config.DEBUG) Log.d(TAG, sensorChanged ( + values0 + , + values1 + , + values2 + ); mValues = values; if (mView != null) mView.invalidate(); public void onAccuracyChanged(int sensor, int accuracy) / TODO Auto-generated method stub ; Overrideprotected void onCreate(Bundle icicle) super.onCreate(icicle); mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); List sensors = mSensorManager.getSensorList(Sensor.TYPE_ALL); Log.d(TAG, There are + sensors.size() + sensors.); for(Sensor sens : sensors) Log.d(TAG, Sensor name: + sens.getType(); Log.d(TAG, Sensor name: + sens.getName(); mView = new SampleView(this); setContentView(mView); Overrideprotected void onResume() if (Config.LOGD) Log.d(TAG, onResume); super.onResume(); mSensorManager.registerListener(mListener, SensorManager.SENSOR_ORIENTATION, SensorManager.SENSOR_DELAY_GAME); Overrideprotected void onStop() if (Config.LOGD) Log.d(TAG, onStop); mSensorManager.unregisterListener(mListener); super.onStop(); private class SampleView extends View private Paint mPaint = new Paint(); private Path mPath = new Path(); private boolean mAnimate; private long mNextTime; public SampleView(Context context) super(context); / Construct a wedge-shaped path mPath.moveTo(0, -50); mPath.lineTo(-20, 60); mPath.lineTo(0, 50); mPath.lineTo(20, 60); mPath.close(); Override protected void onDraw(Canvas canvas) Paint paint = mPaint; canvas.drawColor(Color.WHITE); paint.setAntiAlias(true); paint.setColor(Color.BLUE); paint.setStyle(Paint.Style.FILL); int w = canvas.getWidth(); int h = canvas.getHeight(); int cx = w / 2; int cy = h / 2; canvas.translate(cx, cy); if (mValues != null) canvas.rotate(-mValues0); canvas.drawPath(mPath, mPaint); Overrideprotected void onAttachedToWindow() mAnimate = true; super.onAttachedToWindow(); Overrideprotected void onDetachedFromWindow() mAnimate = false; super.onDetachedFromWindow(); 傳感器監(jiān)測裝置感受測量信息按規(guī)律轉換為電信號或其他形式的信息輸出自動監(jiān)測和自動控制Android 支持的傳感器:1.方向傳感器2.磁場傳感器3.溫度傳感器4.光感傳感器5.壓力傳感器獲取SensorManager對象getSysteService(Context.SENSOR_SERVICE)獲取傳感器類型getDefaultSensor(int type)注冊傳感器registerListener()模擬完成上述代碼操作后,運行:模擬器待機畫面模擬器主界面模擬器程序界面模擬器compass效果圖模擬器compass運行界面功能1、高精確度:專業(yè)航海指針,精確指南。2、流暢操作:流暢的羅盤旋轉,專業(yè)的傳感器去噪處理,讓您的指南針更精準。 3、智能校準:智能的校準提示(8字型環(huán)繞設備),提升您的指南針設備的精確度。 4、磁北正北:輕松的磁北正北轉換。 5、誤差校正:允許手動輸入地磁偏角??偨Y通過這次課程設計,我對Android程序設計有了新的認識,尤其是傳感器方面,弄懂了許多基礎理論,不過自己還有很多方面不足。在這個循序漸進的過程中,解決了一些自己的認為比較難的地方后我又繼續(xù)朝前行進著。課程設計終于在我們小組的努力下做完了。我更加深入的了解了Android的特點以及一些相關知識。與其臨淵羨魚,不如退而結網。這次Android課程設計給我的最大的印象就是如果自己有了興趣,就動手去做,在你的勇氣和毅力下,困難是抬不了頭的。如果你連失敗都不怕了,那你還怕什么,拾起懶惰的心,勤奮就會走向成功。這次的課程設計在我未來的時日里,是一個標桿,因為它告訴了我,只要我努力沒有什么事我做不好的。最后我要感謝李祎老師對我們的辛勤培養(yǎng),謝謝參考網址1.http:/

注意事項

本文(基于安卓平臺的指南針的實現課程設計報告.doc)為本站會員(good****022)主動上傳,裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對上載內容本身不做任何修改或編輯。 若此文所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網速或其他原因下載失敗請重新下載,重復下載不扣分。




關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網,我們立即給予刪除!