智能的手機(jī)學(xué)習(xí)與應(yīng)用的_第1頁
智能的手機(jī)學(xué)習(xí)與應(yīng)用的_第2頁
智能的手機(jī)學(xué)習(xí)與應(yīng)用的_第3頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、智能手機(jī)程序設(shè)計(jì)之修改篇11101078 張萍學(xué)習(xí)智能手機(jī)程序設(shè)計(jì)已經(jīng)算是有一段時(shí)間了, 我想把我這段時(shí)間研究的一些 “成果”介紹給大家了解一下, 也算是探索之余的一次小小嘗試和進(jìn)步吧, 同時(shí)也把我遇到的問題拿出來和大家一起探討一下,下面是我自己學(xué)習(xí)的一些心得:一:多媒體學(xué)習(xí)1. Audio對于多媒體中聲音的界面控制,我是把代碼中的按鈕位置和數(shù)字 1-9 采用 a-i 字母修10dip 修改為改了一下,如圖可以看到,我把顯示界面的位置調(diào)到了中間,是把代碼從而調(diào)整了按鈕所在的中間位置,同時(shí)可以增加你任意想要增加的按鈕的個數(shù)和每個按鈕的聲音,比如加上 jkl 等按鈕的聲音,這其中聲音的加入你就要增

2、加相應(yīng)文件的個數(shù)來達(dá)到每個按鈕按下去都會有不同的聲音,變化圖形如下圖:Video 文件的學(xué)習(xí)中,我一直無法將 samplevideo.3gp 文件在程序運(yùn)行時(shí)打開,運(yùn)行起來 會出現(xiàn)錯誤,不能在虛擬器中打開。2. Sudoku3為數(shù)獨(dú)游戲配上音樂1. 首先創(chuàng)建一個選擇音樂的界面 musicchoice ,然后點(diǎn)擊按鈕可以選擇不同的音樂類型,即點(diǎn)擊后彈出一個對話框,就如那個難度系數(shù)的對話框一樣。 kinds 可以在游戲開始的時(shí)候也來個音樂方 light 面的選擇,比如你喜歡搖滾或者輕音樂再 heavy 或者稍微重一點(diǎn)的音樂來提高整體游戲的rock 愉悅程度, 不過要建立像之前選擇游戲難度 一樣的對

3、話框,這就要一步步的添加導(dǎo)入 一些需要的包了。2. mp .start();mp .setLooping( true );,但是書本上是我想要的是直接開始音樂,再對音樂進(jìn)行循環(huán)播放,我覺得這樣也應(yīng)該可以 直接循環(huán)然后再播放音樂二.存儲本地?cái)?shù)據(jù)Sudoku41.for (int i = 0; i ai;if (i % 3 != 0)continue ;對于這個循環(huán)的話,大家都看得懂,但是我想說的 這個是對上面我修改的字母進(jìn)行的說明,如果輸入字母就 要稍微修改一下。private static final string selx= selx ;private static final string

4、 sely= sely ;private static final string view_state= viewstate ;private static finalint ID=42 將這段程序修改為如下圖:在這里,我也想要把int ID=42的數(shù)字修改為 20 ,也就是將光標(biāo)的位置初始值設(shè)定為20,這也是一個小小的修改吧。三:互聯(lián)的世界1. 左圖是對書上的代碼進(jìn)行修改,android:layout_width=wrap_content ”代碼為android:layout_height=wrap_contentandroid:layout_weight=” 1.0android:line

5、s= ” 1”旨在修改顯示的界面,顯示的行數(shù),以及占屏幕的比例。2.我是直接在 strings.xml 中直接修改 go 為 Enter ,這個比較簡單。3. private void openBrowser() Uri uri = Uri. parse (urlText .getText().toString();Intent intent =new Intent(Intent. ACTION_VIEW , uri);startActivity(intent);View 直接將 startActivity(intent) 修改為 startActivity(view) ,將 intent 類

6、改為嵌入式類,主要是在一個活動中打開另外一個活動。 其實(shí)在很多時(shí)候都要嵌入式類來達(dá)到在一個活動 中打開另一個界面的目的,這是一個大的突破和創(chuàng)新運(yùn)用。四.定位與環(huán)境感知1.谷歌地圖Mymap當(dāng)你在一米范圍內(nèi)時(shí)不進(jìn)行刷新,也就是當(dāng)你拿著手機(jī)進(jìn)行定位時(shí)它顯示的位置在一米范圍內(nèi)不會變化,而當(dāng)你走出這一范圍后,程序會自動刷新,顯示你當(dāng)前所在的位置。地圖界面上可以直接通過 X.Y 坐標(biāo)軸在地圖上實(shí) 現(xiàn)直接定位到某一點(diǎn),并可以顯示兩點(diǎn)之間的直線距 離,可以輸入兩點(diǎn)之間的經(jīng)緯度,計(jì)算兩點(diǎn)之間的實(shí) 際距離,同時(shí)可以看到在圖上點(diǎn)擊衛(wèi)星,可以實(shí)現(xiàn)交 通圖和衛(wèi)星圖的相互轉(zhuǎn)換,這是谷歌地圖的一大亮點(diǎn) 與讓人佩服的地方。

7、通過地名定位的設(shè)計(jì)思路本功能的實(shí)現(xiàn)目標(biāo)是:在一個 EditText 里輸入一個地名,點(diǎn)擊 Button ,在 MapView 里便會顯示出該地。實(shí)際上,由于在Google Map 中必須獲得經(jīng)緯度才能定位,故本定位方法不過是前一種定位方法的加強(qiáng)版, 即先通過地名獲得該地的經(jīng)緯度, 再通過經(jīng)緯度進(jìn)行 定位。由此可知,本設(shè)計(jì)的核心內(nèi)容,便是如何通過地名獲得該地的經(jīng)緯度。本來此問題應(yīng)該很好解決,因?yàn)?Google 提供了一個用于實(shí)現(xiàn)該功能的 Geocoder 類, 只要使用該類生成一個對象, 并使用 getFromLocationName()方法, 只需幾句代碼便可輕松將地名轉(zhuǎn)換為相應(yīng)的經(jīng)緯度,由于

8、手中的 android 開發(fā)教材和網(wǎng)絡(luò)上能夠搜索到的絕大 部分資料中使用的都是該方法,如下:Geocoder geocoder = new Geocoder( this );List list=geoCoder.getFromLocationName(Address,1);/Address 是輸入的地址信息if (!lstAddress.isEmpty()Address address =list .get(0);double latitude = address .getLatitude()*1E6;double longitude =adress.getLongitude()*1E6;Ge

9、oPoint geopoint =new GeoPoint( int )latitude ,(int )longitude );但在實(shí)際的開發(fā)過程中發(fā)現(xiàn),在調(diào)試程序時(shí),點(diǎn)擊 Button 后,程序沒有任何響應(yīng)。經(jīng) 反復(fù)調(diào)查研究后得知,由于 google map 中的 Getcoder 反轉(zhuǎn)經(jīng)緯度一直存在 BUG ,在前 一段時(shí)間 google 終止了這項(xiàng)服務(wù),故 Geocoder 返回 List 為 null ,得不到地址信息。但是可以采用下面的步驟一步步完成定位與更新:a.獲取用戶當(dāng)前位置的步驟如下:1 、在 AndroidManifeST.xml 中聲明相應(yīng)的權(quán)限: android:nam

10、e= “ 2 、提供位置服務(wù),首先需要獲得 LocationManager 對象獲取 LocationManager 可以通過調(diào)用 函數(shù)實(shí)現(xiàn)函數(shù)代碼如下mlocationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);3 、設(shè)置 Criteria 對象:Criteria criteria = newCriteria);criteria.setAccuracy ( Criteria.ACCURACY_FINE );criteria.setAltitudeRequiredfalse );cr

11、iteria.setBearingRequired( false );criteria.setCostAllowed ( false );criteria.setPowerRequirementCriteria.POWER_LOW );4 、設(shè)置 ProviderString provider = locationManager.getBestProvidercriteria , true );Location location= locationManager.getLastKnownLocationprovider );此圖為谷歌衛(wèi)星定位視圖,我們可以感受到它的強(qiáng)大與深不可測。b 、 We

12、bView 的定義及設(shè)置:1. 在 XML 布局文件中定義 WebView 控件;然后在程序中裝載這個控件,設(shè)置屬性; 最后通過 loadUrl 方法實(shí)現(xiàn)網(wǎng)頁的載入。設(shè)置可以訪問文件 webSettings.setAllowFileAccess( true );設(shè)置支持縮放如果需要設(shè)置地圖顯示的地點(diǎn)以及放大倍數(shù)等,就需要使用 MapController 來控制地 圖。可以通過如下代碼獲得 MapController 對象:MapController mapController ;mapController = mapView .getController();(TextView)layout.

13、findViewById(R.id. showmapZoom );showZoomlevel.setText( 縮放級別”+String. valueOf (sgMapView .getZoomLevel();c.增加經(jīng)度緯度的設(shè)定要定位地點(diǎn),需要構(gòu)造一個 GeoPoint 來表示地點(diǎn)的經(jīng)緯度,然后使用 animateTo方法將地圖定位到指定的 GeoPoint 上,代碼如下:GeoPoint geoPoint01geoPoint01 = new GeoPoint( int ) (editText01double * 1000000), ( int )(editText02double * 1

14、000000);mapController .animateTo( geoPoint01 );定義一個類,保存經(jīng)緯度信息,經(jīng)緯度按照用戶輸入地址解析而得到。其函數(shù)代碼如 下:public void onProviderDisabled(String provider)Toast. makeText (GMap. this , R.string. nogps_alert ,Toast. LENGTH_LONG ).show();public void onProviderEnabled(String provider)public void onStatusChanged(String prov

15、ider,int status,Bundle extras);通過調(diào)用 Location 中的 getLatitude() 和 getLonggitude() 方法可以分別獲取位置信息中的 緯度和經(jīng)度,示例代碼如下:double geoLatitude = location.getLatitude() * 1E6;double geoLongitude = location.getLongitude() * 1E6;d :代碼將產(chǎn)生位置改變事件的條件設(shè)定為時(shí)間間隔為 3 秒實(shí)現(xiàn) locationListener 的代碼如下LocationListener locationListener =

16、new LocationListener()public void onLocationChanged(Location location) public void onProviderDisabled(String provider) public void onProviderEnabled(String provider) public void onStatusChanged(String provider, int status, Bundle extras) ;e. 修改 main.xml需 要 在 main.xml 里 創(chuàng) 建 一 個 來 自 的 MapView 標(biāo)簽。其中 cl

17、ickable 屬性設(shè)置了是否允許用戶和地圖的交互, apiKey 里填寫的 就是剛剛申請到的 apiKey :f. 創(chuàng)建工程在 Eclipse 環(huán)境下,選擇 File New Project Android ,選擇 Android Project 。創(chuàng) 建方法同普通 Java 項(xiàng)目和其他 Android 項(xiàng)目并無明顯區(qū)別,但必須在 Build Target 中勾 選 Google API 。g. 修改 AndroidManifest.xml 文件因?yàn)榈貓D應(yīng)用使用的是 Google Maps 的類庫,而不是 Android 的標(biāo)準(zhǔn)類庫,所以需要在 AndroidManifest.xml 文件的

18、 標(biāo)簽 中聲明: 由于需要從網(wǎng)絡(luò)獲取地圖數(shù)據(jù),所以需要訪問網(wǎng)絡(luò)的權(quán)限:h. 增加標(biāo)記 為了給地圖多增加一些自定義的功能, 比如可以在地圖上進(jìn)行一些標(biāo)注。為了實(shí)現(xiàn) 這樣的功能, 我們可以繼承 Overlay 這個類, 這個類是一個基類,提供了可以在地圖上添 加圖層的基本功能。記,代 碼 如下 : canvas.drawBitmap(bmp,myScreenCoords. x, myScreenCoords. y,在定位的目標(biāo)地點(diǎn)引入一張圖片做標(biāo)paint);在定位的目標(biāo)地點(diǎn)添加文字做標(biāo)記,代碼如下:canvas.drawText( 定位目標(biāo) , myScreenCoords. x, myScre

19、enCoords. y, paint);I:代碼修改 Hello World, MapIIIActivity! MapIII 請?zhí)钊刖暥?請?zhí)钊虢?jīng)度 定位 地址 : 下沙文澤路 查找 退出 地圖切換 : 衛(wèi)星圖 交通圖 J:同時(shí)設(shè)置更新頻率也是極其重要的一點(diǎn):menu.add(1, mUpdateSetting , Menu. NONE , 設(shè)置更新頻率 ).setIcon(R.drawable. sett );此圖為設(shè)置更新頻率視圖, 菜單“設(shè)置更 新頻率” 在 Gmap.Java 的對應(yīng)代碼見后。五: SQL實(shí)戰(zhàn)1. select * from mytable where(_id=3);可

20、以直接修改 id=n,n 取你想要取的數(shù), 還可以修改 * 為選擇你需要的列數(shù)比如名字一 列,組合成一個列表。之前有學(xué)過數(shù)據(jù)庫,對其中的知識也算了解的比較清楚。insert into mytable values(null, Steven King, 555-1212);insert into mytable values(null, John Smith, 555-2345);insert into mytable values(null, Fred Smitheizen, 555-4321);insert into mytable values(null, Zhang Ping, 555-

21、4312);這個插入也可以多插入幾行數(shù)據(jù), 這都是隨你自己需要而定的。 對于怎么創(chuàng)建數(shù)據(jù)表, 插入選取我就不一一列舉出多種改變了。對于之后的 Eventv1.Eventv2 以及之后的有關(guān)數(shù)據(jù)庫的學(xué)習(xí)我想在以后的學(xué)習(xí)中在 慢慢深究吧。六:學(xué)習(xí)心得與體會通過這次自我的一次嘗試,讓我大體上理清了我們所學(xué)習(xí)的這幾張知識,雖然還是有 很多代碼看不懂,也看不明白, 但是大致上可以了解 Android 智能手機(jī)的發(fā)展走向,它一步步的思考, 怎樣在一個活動中嵌入另外一個活動都是思考著真正的智慧所在。 對于這幾章的 學(xué)習(xí)比較, 多媒體是把安靜的游戲等創(chuàng)造一個更真實(shí)的環(huán)境讓它更加生動;谷歌地圖算是互聯(lián)網(wǎng)上的一個

22、開拓吧, 從不同的方面著手, 卻可以得到同樣的卻又不太一樣的效果, 不論是 從衛(wèi)星上還是從交通圖上的一個視圖都是富于變換的; 對于數(shù)據(jù)庫的話, 我之前學(xué)習(xí)的只要 是數(shù)據(jù)的存儲以及選取, 并沒能真正將數(shù)據(jù)與程序的進(jìn)程聯(lián)系起來, 所以對于這一章還有待 于我去好好將單純的數(shù)據(jù)庫與程序設(shè)計(jì)相結(jié)合。我知道還有幾個可以更改的地方, 比如數(shù)據(jù)庫方面的修改, 我可以利用以前的知識進(jìn)行 更深入的研究, 還有對于谷歌地圖也可以在定位上進(jìn)一步修改, 我知道此次程序設(shè)計(jì)的學(xué)習(xí) 還沒有從根本上解決一些問題, 知識也只是點(diǎn)到為止的感覺, 我希望在以后的學(xué)習(xí)中能夠更 加專研去深究一些問題,哪怕只是一點(diǎn)點(diǎn)的進(jìn)步,我相信也是好

23、的。代碼一:設(shè)置更新頻率private void updateSetDialog()AlertDialog.Builder builder =newAlertDialog.Builder( this );builder.setTitle( 設(shè)置更新頻率 );LayoutInflaterinflater=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);updatesetting ,null );View layout = inflater.inflate(R.layout.min_time );final EditText minTimeIn = (EditText)layout.findViewById(R.id.final EditText minDistanceIn(EditText)layout.findViewById(R.id. min_distance );minTimeIn.setText(String. valueOf (updatesp .getInt( mintime , 60000);minDistanceIn.setText(String. valueOf (updatesp .getInt( mindistance , 0);builder.setView(la

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論