Android的定位服務(wù)與座標(biāo)課件_第1頁(yè)
Android的定位服務(wù)與座標(biāo)課件_第2頁(yè)
Android的定位服務(wù)與座標(biāo)課件_第3頁(yè)
Android的定位服務(wù)與座標(biāo)課件_第4頁(yè)
Android的定位服務(wù)與座標(biāo)課件_第5頁(yè)
已閱讀5頁(yè),還剩163頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第14章Google地圖與定位服務(wù)

14-1定位服務(wù)-我在哪裡

14-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

14-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

14-4使用GoogleMapsAPI-My地圖

14-5標(biāo)記Google地圖-追蹤個(gè)人行蹤第14章Google地圖與定位服務(wù)14-1定位服務(wù)-114-1定位服務(wù)-我在哪裡14-1-1Android的定位服務(wù)與座標(biāo)14-1-2使用定位服務(wù)-我在哪裡14-1定位服務(wù)-我在哪裡14-1-1Android的定214-1-1Android的定位服務(wù)與座標(biāo)-說(shuō)明Android行動(dòng)裝置結(jié)合定位功能和Google地圖建立的「位置感知服務(wù)」(Location-basedService,LBS),這是一項(xiàng)十分實(shí)用的功能,LBS應(yīng)用程式可以追蹤你的位置和提供一些額外服務(wù),例如:找出附近的咖啡廳、停車場(chǎng)、自動(dòng)櫃員機(jī)或加油站等。Android作業(yè)系統(tǒng)提供LocationManager類別的定位服務(wù)來(lái)幫助我們存取行動(dòng)裝置目前的定位資料,包含:緯度(Latitude)、經(jīng)度(Longitude)和高度(Altitude)等。14-1-1Android的定位服務(wù)與座標(biāo)-說(shuō)明Andro314-1-1Android的定位服務(wù)與座標(biāo)-種類GPS定位提供者:提供者名稱字串為"gps",它是使用GPS(GlobalPositioningSystem)的衛(wèi)星訊號(hào)來(lái)定位,可以提供精確的位置資訊,但是無(wú)法收到衛(wèi)星訊號(hào)的室內(nèi)並無(wú)法使用。網(wǎng)路定位提供者;提供者名稱字串為"network",它是直接使用電信公司基地臺(tái)來(lái)執(zhí)行三角定位,其提供的位置資訊較不精確,但是可以在室內(nèi)使用。14-1-1Android的定位服務(wù)與座標(biāo)-種類GPS定位414-1-1Android的定位服務(wù)與座標(biāo)-座標(biāo)定位服務(wù)最主要的目的是找出行動(dòng)裝置目前位置的經(jīng)緯度座標(biāo),經(jīng)緯度是經(jīng)度與緯度合稱的座標(biāo)系統(tǒng),也稱為地理座標(biāo)系統(tǒng),它是使用三度空間的球面來(lái)定義地球表面各點(diǎn)的座標(biāo)系統(tǒng),能夠標(biāo)示地球表面上的任何一個(gè)位置。經(jīng)度與緯度的說(shuō)明,如下所示:緯度:地球表面某一點(diǎn)距離地球赤道以南或以北的度數(shù),其值為0至90度,赤道以北的緯度叫北緯(符號(hào)為N);赤道以南的緯度稱南緯(符號(hào)為S)。經(jīng)度:地球表面上某一點(diǎn)距離本初子午線(一條南北方向經(jīng)過(guò)倫敦格林威治天文臺(tái)舊址的子午線)以東或以西的度數(shù),簡(jiǎn)單的說(shuō),本初子午線的經(jīng)度是0度,其他地點(diǎn)的經(jīng)度是向東從0到180度,即東經(jīng)(符號(hào)為W)或向西從0到180度,即西經(jīng)(符號(hào)為E)。14-1-1Android的定位服務(wù)與座標(biāo)-座標(biāo)定位服務(wù)最514-1-2使用定位服務(wù)-我在哪裡(說(shuō)明)我在哪裡是定位服務(wù)的最簡(jiǎn)單應(yīng)用,可以顯示目前行動(dòng)裝置的經(jīng)緯度座標(biāo)。14-1-2使用定位服務(wù)-我在哪裡(說(shuō)明)我在哪裡是定位服614-1-2使用定位服務(wù)-我在哪裡

步驟一:開(kāi)啟和執(zhí)行AndroidStudio專案請(qǐng)啟動(dòng)AndroidStudio開(kāi)啟專案Ch14_1_2,內(nèi)含1個(gè)Java類別檔和版面配置檔activity_main.xml。執(zhí)行可以看到程式顯示目前的位置座標(biāo),按【顯示Google地圖】鈕,可以啟動(dòng)Google地圖顯示此座標(biāo)附近的地圖,即臺(tái)北火車站,如下圖所示:14-1-2使用定位服務(wù)-我在哪裡

步驟一:開(kāi)啟和執(zhí)行An714-1-2使用定位服務(wù)-我在哪裡

步驟二:建立我在哪裡使用介面的版面配置使用介面的版面配置是定義在activity_main.xml檔,垂直編排1個(gè)TextView和Button元件,如下圖所示:14-1-2使用定位服務(wù)-我在哪裡

步驟二:建立我在哪裡使814-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activity活動(dòng)類別使用定位服務(wù)-1在MainActivity活動(dòng)類別的開(kāi)頭宣告成員的LocationManager和Location物件變數(shù),如下所示:publicclassMainActivityextendsAppCompatActivity{privatestaticfinalintPERMISSIONS_REQUEST_ACCESS_FINE_LOCATION=101;privateLocationManagermanager;privateLocationcurrentLocation;privateStringbest;…...}14-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activ914-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activity活動(dòng)類別使用定位服務(wù)-2onCreate()方法在覆寫onCreate()方法載入版面配置後,呼叫g(shù)etSystemService()方法取得系統(tǒng)服務(wù)LocationManager物件,if條件判斷是否啟用GPS,如下所示:@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);manager=(LocationManager)getSystemService(LOCATION_SERVICE);if(!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)){14-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activ1014-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activity活動(dòng)類別使用定位服務(wù)-3if條件呼叫LocationManager物件的isProviderEnabled()方法檢查是否啟用GPS,沒(méi)有,就顯示對(duì)話方塊要求啟用GPS,如下所示:

AlertDialog.Builderbuilder=newAlertDialog.Builder(this);builder.setTitle("定位管理").setMessage("GPS目前狀態(tài)是尚未啟用.\n"+"請(qǐng)問(wèn)你是否現(xiàn)在就設(shè)定啟用GPS?").setPositiveButton("啟用",newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialog,intwhich){Intenti=newIntent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);startActivity(i);}}).setNegativeButton("不啟用",null).create().show();}14-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activ1114-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activity活動(dòng)類別使用定位服務(wù)-4if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M&&checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION)!=PackageManager.PERMISSION_GRANTED){requestPermissions(newString[]{Manifest.permission.ACCESS_FINE_LOCATION},PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION);}}14-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activ1214-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activity活動(dòng)類別使用定位服務(wù)-5onResume()方法在覆寫onResume()方法建立Criteria物件設(shè)定如何選擇提供者,以便取得最佳或符合你需求的定位提供者,然後就可以呼叫g(shù)etrBestProvider()方法取得最佳提供者字串,參數(shù)是Criteria物件,如下所示:@OverrideprotectedvoidonResume(){super.onResume();Criteriacriteria=newCriteria();best=manager.getBestProvider(criteria,true);intminTime=5000;//毫秒

floatminDistance=5;//公尺if(best!=null){currentLocation=manager.getLastKnownLocation(best);

14-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activ1314-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activity活動(dòng)類別使用定位服務(wù)-6manager.requestLocationUpdates(best,minTime,minDistance,listener);}else{currentLocation=manager.getLastKnownLocation(LocationManager.GPS_PROVIDER);manager.requestLocationUpdates(LocationManager.GPS_PROVIDER,minTime,minDistance,listener);}updatePosition();}14-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activ1414-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activity活動(dòng)類別使用定位服務(wù)-7onPause()方法在覆寫onPause()方法呼叫removeUpdates()方法取消周期更新位置,如下所示:@OverrideprotectedvoidonPause(){super.onPause();try{manager.removeUpdates(listener);}catch(SecurityExceptionsex){Log.e("Ch14_1_2","GPS權(quán)限失敗..."+sex.getMessage());}}14-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activ1514-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activity活動(dòng)類別使用定位服務(wù)-8updatePosition()方法在自訂updatePosition()方法更新TextView元件顯示的位置資訊,如下所示:privatevoidupdatePosition(){TextViewoutput;output=(TextView)findViewById(R.id.output);if(currentLocation==null){output.setText("取得定位資訊中...");}else{output.setText(getLocationInfo(currentLocation));}}14-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activ1614-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activity活動(dòng)類別使用定位服務(wù)-9LocationListener傾聽(tīng)者物件使用匿名內(nèi)層類別實(shí)作LocationListener介面來(lái)建立此物件,需要實(shí)作4個(gè)方法,如下所示:privateLocationListenerlistener=newLocationListener(){@OverridepublicvoidonLocationChanged(Locationlocation){currentLocation=location;updatePosition();}@OverridepublicvoidonProviderDisabled(Stringprovider){}@OverridepublicvoidonProviderEnabled(Stringprovider){}@OverridepublicvoidonStatusChanged(Stringprovider,intstatus,Bundleextras){}};

14-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activ1714-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activity活動(dòng)類別使用定位服務(wù)-10getLocationInfo()方法在自訂的getLocationInfo()方法可以從參數(shù)Loaction物件取得定位資訊,如下所示:publicStringgetLocationInfo(Locationlocation){StringBufferstr=newStringBuffer();str.append("定位提供者(Provider):"+location.getProvider());str.append("\n緯度(Latitude):"+Double.toString(location.getLatitude()));str.append("\n經(jīng)度(Longitude):"+Double.toString(location.getLongitude()));str.append("\n高度(Altitude):"+Double.toString(location.getAltitude()));returnstr.toString();}14-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activ1814-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activity活動(dòng)類別使用定位服務(wù)-11button_Click()事件處理方法button_Click()事件處理方法可以依據(jù)目前的位置座標(biāo)來(lái)啟動(dòng)Google地圖,它是使用Intent物件啟動(dòng)Google地圖程式,首先取得經(jīng)緯度座標(biāo)longitude和latitude,如下所示:publicvoidbutton_Click(Viewview){floatlatitude=(float)currentLocation.getLatitude();floatlongitude=(float)currentLocation.getLongitude();Stringuri=String.format("geo:%f,%f?z=18",latitude,longitude);IntentgeoMap=newIntent(Intent.ACTION_VIEW,Uri.parse(uri));startActivity(geoMap);}14-1-2使用定位服務(wù)-我在哪裡

步驟三:建立Activ1914-1-2使用定位服務(wù)-我在哪裡

步驟四:在AndroidManifest.xml新增權(quán)限因?yàn)樾枰褂枚ㄎ环?wù),所以在AndroidManifest.xml檔新增2個(gè)權(quán)限,ACCESS_COURSE_LOCATION是網(wǎng)路定位服務(wù),ACCESS_FINE_LOCATION是GPS定位服務(wù),如下所示:<uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"/><uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/>14-1-2使用定位服務(wù)-我在哪裡

步驟四:在Androi2014-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)(說(shuō)明)地圖解碼服務(wù)(GeocodingServices)可以從位置名稱、郵遞區(qū)號(hào)等資訊來(lái)找出經(jīng)緯度座標(biāo),或反過(guò)來(lái),從經(jīng)緯度座標(biāo)找出位置名稱或地址。Android是使用Geocoder類別來(lái)處理座標(biāo)轉(zhuǎn)換,相關(guān)方法的說(shuō)明,如下表所示:方法說(shuō)明getFromLocation()將經(jīng)緯度座標(biāo)轉(zhuǎn)換成地址資訊,目前臺(tái)灣只能轉(zhuǎn)換成所屬鄉(xiāng)鎮(zhèn)區(qū)和郵遞區(qū)號(hào)getFromLocationName()將位置名稱或地址轉(zhuǎn)換成經(jīng)緯度座標(biāo)14-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)(說(shuō)明)地圖解碼服務(wù)(2114-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟一:開(kāi)啟和執(zhí)行AndroidStudio專案請(qǐng)啟動(dòng)AndroidStudio開(kāi)啟專案Ch14_2,內(nèi)含1個(gè)Java類別檔和版面配置檔activity_main.xml,其執(zhí)行結(jié)果如下圖所示:14-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟一:開(kāi)啟和執(zhí)行An2214-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟二:建立找出景點(diǎn)座標(biāo)使用介面的版面配置找出景點(diǎn)座標(biāo)的使用介面是定義在activity_main.xml檔,內(nèi)含多個(gè)TextView、EditText元件和Button元件,如下圖所示:14-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟二:建立找出景點(diǎn)座2314-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟三:建立Activity活動(dòng)類別找出景點(diǎn)座標(biāo)-1在MainActivity活動(dòng)類別的開(kāi)頭宣告成員的ArrayAdapter和Geocoder等物件變數(shù),如下所示:publicclassMainActivityextendsAppCompatActivity{privatefinalintmaxResult=3;privateStringaddressList[]=newString[maxResult];privateArrayAdapter<String>adapter;privateTextViewoutput;privateGeocodergeocoder;privateEditTextlat,lon;…}14-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟三:建立Activ2414-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟三:建立Activity活動(dòng)類別找出景點(diǎn)座標(biāo)-2onCreate()方法在覆寫的onCreate()方法載入版面配置後,可以取得EditText物件來(lái)取得輸入座標(biāo),如下所示:@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);lat=(EditText)findViewById(R.id.txtLat);lon=(EditText)findViewById(R.id.txtLong);output=(TextView)findViewById(R.id.output);geocoder=newGeocoder(this,Locale.TAIWAN);}14-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟三:建立Activ2514-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟三:建立Activity活動(dòng)類別找出景點(diǎn)座標(biāo)-3button_Click()事件處理方法在button_Click()事件處理方法將經(jīng)緯度座標(biāo)轉(zhuǎn)換成地址,首先將經(jīng)緯度的輸入字串轉(zhuǎn)換成float浮點(diǎn)數(shù),如下所示:publicvoidbutton_Click(Viewview){floatlatitude=Float.parseFloat(lat.getText().toString());floatlongitude=Float.parseFloat(lon.getText().toString());try{List<Address>listAddress=geocoder.getFromLocation(latitude,longitude,maxResult);程式碼呼叫Geocoder物件的getFromLocation()方法取得地址清單的List物件,參數(shù)依序是緯度、經(jīng)度和最多傳回的地址數(shù)。14-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟三:建立Activ2614-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟三:建立Activity活動(dòng)類別找出景點(diǎn)座標(biāo)-4如果有傳回地址,就在下方if條件的程式區(qū)塊建立ArrayAdapter結(jié)合器物件,然後顯示在Spinner元件,如下所示:

if(listAddress!=null){Spinnerspinner=(Spinner)findViewById(R.id.addresslist);for(intj=0;j<maxResult;j++)addressList[j]="N/A";intindex=0;for(intj=0;j<maxResult;j++){AddressfindAddress=listAddress.get(j);StringBuilderstrAddress=newStringBuilder();for(inti=0;i<findAddress.getMaxAddressLineIndex();i++){Stringstr=findAddress.getAddressLine(i);strAddress.append(str).append("\n");}if(strAddress.length()>0){addressList[index++]=strAddress.toString();}}14-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟三:建立Activ2714-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟三:建立Activity活動(dòng)類別找出景點(diǎn)座標(biāo)-5在建立addressList[]陣列後,可以將此陣列建立成ArrayAdapter結(jié)合器物件,如下所示:

adapter=newArrayAdapter<String>(this,android.R.layout.simple_spinner_item,addressList);adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);spinner.setAdapter(adapter);}else{output.setText("注意:沒(méi)有傳回地址資料!");}}catch(Exceptionex){output.setText("錯(cuò)誤:"+ex.toString());}}14-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟三:建立Activ2814-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟三:建立Activity活動(dòng)類別找出景點(diǎn)座標(biāo)-6button2_Click()事件處理方法在button2_Click()事件處理方法將地址轉(zhuǎn)換成經(jīng)緯度座標(biāo),首先取得使用者在EditText元件輸入的名稱,如下所示:publicvoidbutton2_Click(Viewview){EditTextaddress=(EditText)findViewById(R.id.txtAddress);StringaddressName=address.getText().toString();try{List<Address>listGPSAddress=geocoder.getFromLocationName(addressName,1);上述程式碼呼叫Geocoder物件的getFromLocationName()方法搜尋經(jīng)緯度座標(biāo),第1個(gè)參數(shù)是名稱,第2個(gè)參數(shù)最多傳回幾個(gè)座標(biāo)。14-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟三:建立Activ2914-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟三:建立Activity活動(dòng)類別找出景點(diǎn)座標(biāo)-7如果有傳回座標(biāo),就取出緯度和經(jīng)度且將它顯示出來(lái),如下所示:

if(listGPSAddress!=null){doublelatitude=listGPSAddress.get(0).getLatitude();doublelongitude=listGPSAddress.get(0).getLongitude();output.setText("緯度:"+latitude+"\n經(jīng)度:"+longitude);lat.setText(String.valueOf(latitude));lon.setText(String.valueOf(longitude));}}catch(Exceptionex){output.setText("錯(cuò)誤:"+ex.toString());}}14-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟三:建立Activ3014-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟三:建立Activity活動(dòng)類別找出景點(diǎn)座標(biāo)-8button3_Click()事件處理方法button3_Click()事件處理方法使用Intent物件啟動(dòng)Google地圖,它和第14-1-2節(jié)的button1_Click()事件處理方法相同,筆者就不重複說(shuō)明。14-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟三:建立Activ3114-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟四:在AndroidManifest.xml新增存取Internet權(quán)限找出景點(diǎn)座標(biāo)因?yàn)樾枰B線Internet,所以在AndroidManifest.xml檔需要新增INTERNET權(quán)限,如下所示:<uses-permissionandroid:name="android.permission.INTERNET"/>14-2地圖解碼服務(wù)-找出景點(diǎn)座標(biāo)

步驟四:在Androi3214-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)GPS景點(diǎn)防撞雷達(dá)是本地服務(wù)與定位服務(wù)的整合應(yīng)用,可以在行動(dòng)裝置接近輸入的景點(diǎn)座標(biāo)時(shí),發(fā)出警告,其他可能的應(yīng)用包含危險(xiǎn)區(qū)域警示,和標(biāo)示目標(biāo)區(qū)域來(lái)檢查是否已經(jīng)到達(dá)指定的範(fàn)圍之中。14-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)GPS景點(diǎn)防3314-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟一:開(kāi)啟和執(zhí)行AndroidStudio專案請(qǐng)啟動(dòng)AndroidStudio開(kāi)啟專案Ch14_3,內(nèi)含3個(gè)Java類別檔和版面配置檔activity_main.xml,其執(zhí)行結(jié)果如右圖所示:14-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟一:開(kāi)3414-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟二:建立GPS景點(diǎn)防撞雷達(dá)使用介面的版面配置GPS景點(diǎn)防撞雷達(dá)使用介面的版面配置是定義在activity_main.xml檔,內(nèi)含多個(gè)TextView、EditText和Button元件,如下圖所示:14-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟二:建3514-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟三:建立Activity活動(dòng)類別的事件處理方法-1在MainActivity活動(dòng)類別的開(kāi)頭宣告成員的EditText和TextView物件變數(shù),如下所示:publicclassMainActivityextendsAppCompatActivity{privatestaticfinalintPERMISSIONS_REQUEST_ACCESS_FINE_LOCATION=101;privateEditTextlat,lon;privateTextViewoutput;…...}14-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟三:建3614-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟三:建立Activity活動(dòng)類別的事件處理方法-2onCreate()方法@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);lat=(EditText)findViewById(R.id.txtLat);lon=(EditText)findViewById(R.id.txtLong);output=(TextView)findViewById(R.id.lblOutput);if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M&&checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION)!=PackageManager.PERMISSION_GRANTED){requestPermissions(newString[]{Manifest.permission.ACCESS_FINE_LOCATION},PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION);}}14-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟三:建3714-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟三:建立Activity活動(dòng)類別的事件處理方法-3start_Click()事件處理方法在start_Click()事件處理方法建立Intent物件後,呼叫startService()方法啟動(dòng)GPSService.class服務(wù),並且傳遞經(jīng)緯度座標(biāo)LATITUDE和LONGITUDE,如下所示:publicvoidstart_Click(Viewview){floatlatitude=Float.parseFloat(lat.getText().toString());floatlongitude=Float.parseFloat(lon.getText().toString());Intentintent=newIntent(this,GPSService.class);intent.putExtra("LATITUDE",latitude);intent.putExtra("LONGITUDE",longitude);startService(intent);output.setText("服務(wù)啟動(dòng)中...");}14-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟三:建3814-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟三:建立Activity活動(dòng)類別的事件處理方法-4stop_Click()事件處理方法在stop_Click()事件處理方法建立Intent物件後,呼叫stopService()方法停止GPSService.class服務(wù),如下所示:publicvoidstop_Click(Viewview){Intentintent=newIntent(this,GPSService.class);stopService(intent);output.setText("服務(wù)停止中...");}14-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟三:建3914-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟三:建立Activity活動(dòng)類別的事件處理方法-5finish_Click()事件處理方法在finish_Click()事件處理方法呼叫finish()方法結(jié)束活動(dòng),如下所示:publicvoidfinish_Click(Viewview){finish();}14-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟三:建4014-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟四:建立GPSService服務(wù)類別-1在GPSService服務(wù)類別使用GPS定位服務(wù)來(lái)檢查是否距離景點(diǎn)100公尺以內(nèi),如果是,送出廣播給GPSReceiver類別。GPSService服務(wù)類別繼承Service類別且實(shí)作LocationListener介面,在開(kāi)頭宣告LocationManager物件變數(shù),如下所示:publicclassGPSServiceextendsServiceimplementsLocationListener{privateLocationManagermanager;privatebooleanisInArea;privatedoublelatitude,longitude;….}14-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟四:建4114-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟四:建立GPSService服務(wù)類別-2onCreate()方法@OverridepublicvoidonCreate(){manager=(LocationManager)getSystemService(LOCATION_SERVICE);try{manager.requestLocationUpdates(LocationManager.GPS_PROVIDER,10000,1,this);}catch(SecurityExceptionsex){Log.e("Ch14_3","GPS權(quán)限失敗..."+sex.getMessage());}isInArea=false;}14-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟四:建4214-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟四:建立GPSService服務(wù)類別-3onStartCommand()方法在onStartCommand()方法取得Intent物件傳遞的經(jīng)緯度座標(biāo)LATITUDE和LONGITUDE,如下所示:@OverridepublicintonStartCommand(Intentintent,intflags,intstartId){latitude=(double)intent.getFloatExtra("LATITUDE",40.422005f);longitude=(double)intent.getFloatExtra("LONGITUDE",-122.084095f);Log.d("GPSService","lat/long:"+latitude+":"+longitude);returnSTART_STICKY;}14-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟四:建4314-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟四:建立GPSService服務(wù)類別-4onDestroy()方法在onDestroy()方法呼叫removeUpdates()方法移除定位服務(wù)的位置更新,並且使用try/catch處理使用者SecurityException沒(méi)有授權(quán)的例外,如下所示:@OverridepublicvoidonDestroy(){try{manager.removeUpdates(this);}catch(SecurityExceptionsex){Log.e("Ch14_3","GPS權(quán)限失敗..."+sex.getMessage());}}14-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟四:建4414-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟四:建立GPSService服務(wù)類別-5onBind()方法onBind()方法並沒(méi)有使用,但是因?yàn)槭浅橄蠓椒ǎ悇e一定要實(shí)作,所以傳回null,如下所示:@OverridepublicIBinderonBind(Intentintent){returnnull;}14-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟四:建4514-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟四:建立GPSService服務(wù)類別-6實(shí)作LocationListener介面的4個(gè)方法因?yàn)镚PSService服務(wù)類別本身是實(shí)作LocationListener介面的傾聽(tīng)者物件,所以需要實(shí)作介面的4個(gè)方法,不過(guò),我們只有使用onLocationChanged()方法,如下所示:@OverridepublicvoidonLocationChanged(Locationcurrent){if(current==null)return;Locationdest=newLocation(current);dest.setLatitude(latitude);dest.setLongitude(longitude);floatdistance=current.distanceTo(dest);Log.d("Ch14_3","距離:"+distance);程式碼在建立目標(biāo)座標(biāo)的Location物件後,呼叫參數(shù)current目前Location物件的distanceTo()方法,參數(shù)是目標(biāo)的Location物件,可以計(jì)算2個(gè)座標(biāo)之間的距離是多少公尺。14-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟四:建4614-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟四:建立GPSService服務(wù)類別-7在下方if條件檢查距離是否小於100公尺,如果是,建立Intent物件送出廣播,如下所示:

if(distance<100.0){if(isInArea==false){Intentintent=newIntent("android.broadcast.LOCATION");sendBroadcast(intent);isInArea=true;}}else{isInArea=false;}}14-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟四:建4714-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟五:建立GPSReceiver廣播接收器類別GPSReceiver廣播接收器類別是用來(lái)接收GPSService服務(wù)送出的android.broadcast.LOCATION廣播,可以使用Toast類別顯示訊息,和振動(dòng)提醒已經(jīng)接近景點(diǎn)範(fàn)圍,如下所示:publicclassGPSReceiverextendsBroadcastReceiver{@OverridepublicvoidonReceive(Contextcontext,Intentintent){Toast.makeText(context,"已經(jīng)接近景點(diǎn)範(fàn)圍",Toast.LENGTH_LONG).show();Vibratorvibrator=(Vibrator)context.getSystemService(Context.VIBRATOR_SERVICE);vibrator.vibrate(500);//半秒

}}14-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟五:建4814-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟六:在AndroidManifest.xml註冊(cè)元件和新增權(quán)限GPSService服務(wù)和GPSReceiver廣播接收器需要在AndroidManifest.xml檔註冊(cè),可以處理android.broadcast.LOCATION的廣播,如下所示:<serviceandroid:name=".GPSService"android:enabled="true"android:exported="true"></service><receiverandroid:name=".GPSReceiver"android:enabled="true"android:exported="true"><intent-filter><actionandroid:name="android.broadcast.LOCATION"/></intent-filter></receiver>14-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟六:在4914-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟六:在AndroidManifest.xml註冊(cè)元件和新增權(quán)限因?yàn)樾枰褂枚ㄎ环?wù)和振動(dòng),所以新增2種權(quán)限,如下所示:<uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/><uses-permissionandroid:name="android.permission.VIBRATE"/>14-3本地服務(wù)與定位應(yīng)用-GPS景點(diǎn)防撞雷達(dá)

步驟六:在5014-4使用GoogleMapsAPI-My地圖(說(shuō)明)GoogleMap(地圖)在第9-4-2節(jié)已經(jīng)說(shuō)明過(guò)如何使用Intent物件啟動(dòng)Google地圖,和顯示指定經(jīng)緯度座標(biāo)附近的地圖。實(shí)務(wù)上,我們可能需要將Google地圖內(nèi)嵌Android應(yīng)用程式之中,此時(shí)我們需要使用GoogleMapsAndroidAPI。請(qǐng)注意!我們需要取得GoogleMapsAPI金鑰,和在Android模擬器選GoogleAPI,才能在Android模擬器上執(zhí)行GoogleMapsAndroidAPI的應(yīng)用程式。14-4使用GoogleMapsAPI-My地圖(說(shuō)明5114-4使用GoogleMapsAPI-My地圖(說(shuō)明)GoogleMapsAndroidAPI核心類別的簡(jiǎn)單說(shuō)明,如下表所示:類別說(shuō)明GoogleMapGoogleMapsAndroidAPI的主要類別,負(fù)責(zé)下載、顯示地圖和回應(yīng)地圖操作,我們不能直接建立此物件,需要從MapView和MapFragment物件呼叫g(shù)etMap()方法來(lái)取得MapView一種View元件,可以下載和顯示Google地圖SupportFragmentMap建立擁有Google地圖的Fragment片段Marker此類別可以在Google地圖上顯示標(biāo)記UiSettingsGoogle地圖使用介面的設(shè)定類別,可以指定開(kāi)啟的使用介面14-4使用GoogleMapsAPI-My地圖(說(shuō)明5214-4使用GoogleMapsAPI-My地圖

步驟一:開(kāi)啟和執(zhí)行AndroidStudio專案請(qǐng)啟動(dòng)AndroidStudio開(kāi)啟專案Ch14_4,內(nèi)含1個(gè)Java類別檔和activity_maps.xml版面配置檔,其執(zhí)行結(jié)果如下圖所示:14-4使用GoogleMapsAPI-My地圖

步驟5314-4使用GoogleMapsAPI-My地圖

步驟二:使用GoogleMapsActivity範(fàn)本建立專案本節(jié)範(fàn)例是直接使用【GoogleMapsActivity】活動(dòng)範(fàn)本建立地圖應(yīng)用程式,我們是在Fragment片段顯示地圖,和在地圖上使用Marker類別作記號(hào),如下圖所示:14-4使用GoogleMapsAPI-My地圖

步驟5414-4使用GoogleMapsAPI-My地圖

步驟二:使用GoogleMapsActivity範(fàn)本建立專案預(yù)設(shè)建立名為MapsActivity活動(dòng)類別,和activity_maps版面配置檔,按【Finish】鈕建立專案。14-4使用GoogleMapsAPI-My地圖

步驟5514-4使用GoogleMapsAPI-My地圖

步驟三:申請(qǐng)GoogleMapsAPI金鑰(說(shuō)明)在將Google地圖整合至Android應(yīng)用程式之前,我們需要先上網(wǎng)取得免費(fèi)GoogleMapsAPI金鑰。AndroidStudio專案的【GoogleMapsActivity】範(fàn)本提供相關(guān)申請(qǐng)資訊的超連結(jié),可以幫助我們更快速的申請(qǐng)GoogleMapsAPI金鑰,其步驟如下所示:14-4使用GoogleMapsAPI-My地圖

步驟5614-4使用GoogleMapsAPI-My地圖

步驟三:申請(qǐng)GoogleMapsAPI金鑰(Step1)Step1:請(qǐng)展開(kāi)專案「res\values」目錄,開(kāi)啟【google_maps_api.xml】檔案,如下圖所示:

14-4使用GoogleMapsAPI-My地圖

步驟5714-4使用GoogleMapsAPI-My地圖

步驟三:申請(qǐng)GoogleMapsAPI金鑰(Step2)Step2:請(qǐng)複製反白行的超連結(jié)文字後,啟動(dòng)瀏覽器進(jìn)入此網(wǎng)頁(yè),筆者是使用GoogleChrome為例,如下圖所示:14-4使用GoogleMapsAPI-My地圖

步驟5814-4使用GoogleMapsAPI-My地圖

步驟三:申請(qǐng)GoogleMapsAPI金鑰(Step3)Step3:在登入Google帳戶後,如果有看到最後2題問(wèn)題,請(qǐng)?jiān)谧钺徇x【是】後,按【同意並繼續(xù)】鈕替專案啟用API,稍等一下,可以看到已啟用API頁(yè)面,如下圖所示:14-4使用GoogleMapsAPI-My地圖

步驟5914-4使用GoogleMapsAPI-My地圖

步驟三:申請(qǐng)GoogleMapsAPI金鑰(Step4)Step4:按【建立API金鑰】鈕建立Android金鑰,稍等一下,可以看到建立的API金鑰字串,請(qǐng)複製此金鑰,如下圖所示:14-4使用GoogleMapsAPI-My地圖

步驟6014-4使用GoogleMapsAPI-My地圖

步驟三:申請(qǐng)GoogleMapsAPI金鑰(Step5)Step5:回到AndroidStudio,將複製的API金鑰字串貼至google_maps_api.xml檔的YOUR_KEY_HERE位置,如下所示:<stringname="google_maps_key"templateMergeStrategy="preserve">YOUR_KEY_HERE</string>14-4使用GoogleMapsAPI-My地圖

步驟6114-4使用GoogleMapsAPI-My地圖

步驟四:建立Fragment片段的版面配置My地圖使用介面的版面配置是定義在activity_maps.xml檔,活動(dòng)範(fàn)本自動(dòng)產(chǎn)生SupportMapFragment類別的<fragment>標(biāo)籤,如下所示:<fragmentxmlns:android="/apk/res/android"xmlns:map="/apk/res-auto"xmlns:tools="/tools"android:id="@+id/map"android:name="com.google.android.gms.maps.SupportMapFragment"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.example.joe.ch14_4.MapsActivity"/>14-4使用GoogleMapsAPI-My地圖

步驟6214-4使用GoogleMapsAPI-My地圖

步驟五:建立MapsActivity活動(dòng)類別和使用定位服務(wù)1MapsActivity活動(dòng)類別是一個(gè)擁有Fragment片段的活動(dòng),類似ListView元件,我們是繼承FragmentActivity類別建立活動(dòng)和實(shí)作OnMapReadyCallback介面,首先宣告定位服務(wù)的物件變數(shù),之後是Google地圖的GoogleMap和標(biāo)記Marker物件變數(shù),如下所示:publicclassMapsActivityextendsFragmentActivityimplementsOnMapReadyCallback{privatestaticfinalintPERMISSIONS_REQUEST_ACCESS_FINE_LOCATION=101;privateLocationManagermanager;privateLocationListenerlocationListener;privateGoogleMapmMap;privateMarkermarker;…...}14-4使用GoogleMapsAPI-My地圖

步驟6314-4使用GoogleMapsAPI-My地圖

步驟五:建立MapsActivity活動(dòng)類別和使用定位服務(wù)2MapsActivity類別的成員方法和內(nèi)層類別,如下所示:onCreate()方法onResume()方法onPause()方法setUpMap()方法onMapReady()方法實(shí)作LocationListener介面的內(nèi)層類別14-4使用GoogleMapsAPI-My地圖

步驟6414-4使用GoogleMapsAPI-My地圖

步驟六:在AndroidManifest.xml新增權(quán)限AndroidStudio的【GoogleMapsActivity】活動(dòng)範(fàn)本會(huì)自動(dòng)在AndroidManifest.xml檔產(chǎn)生ACCESS_FINE_LOCATION權(quán)限,如下所示:<uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/>上述權(quán)限不是Google地圖所需權(quán)限,而是定位服務(wù)的權(quán)限。在<application>標(biāo)籤新增<meta-data>子標(biāo)籤,如下所示:<meta-dataandroid:name="com.google.android.geo.API_KEY"android:value="@string/google_maps_key"/>上述<meta-data>標(biāo)籤指定GoogleMapsAPI金鑰。14-4使用GoogleMapsAPI-My地圖

步驟6514-5標(biāo)記Google地圖-追蹤個(gè)人行蹤GoogleMapsAndroidAPI可以讓我們使用MapView元件或MapFragment類別建立地圖應(yīng)用程式,和在地圖上作記號(hào),活用此功能,就可以建立多樣化應(yīng)用,例如:標(biāo)記附近的加油站、停車場(chǎng)位置或個(gè)人行蹤等。在這一節(jié)我們準(zhǔn)則建立追蹤個(gè)人行蹤的Android應(yīng)用程式,第14-4節(jié)只有使用1個(gè)標(biāo)記,在這一節(jié)我們準(zhǔn)備在行動(dòng)裝置的Google地圖上標(biāo)記最近十次的位置座標(biāo)。14-5標(biāo)記Google地圖-追蹤個(gè)人行蹤GoogleM6614-5標(biāo)記Google地圖-追蹤個(gè)人行蹤

步驟一:開(kāi)啟和執(zhí)行AndroidStudio專案請(qǐng)啟動(dòng)AndroidStudio開(kāi)啟專案Ch14_5,內(nèi)含2個(gè)Java類別檔和2個(gè)版面配置檔,其執(zhí)行結(jié)果如右圖所示:14-5標(biāo)記Google地圖-追蹤個(gè)人行蹤

步驟一:開(kāi)啟和6714-5標(biāo)記Google地圖-追蹤個(gè)人行蹤

步驟二:建立主活動(dòng)使用介面的版面配置主活動(dòng)使用介面的版面配置是定義在activity_main.xml檔案,依序編排2個(gè)TextView和Button元件,如下圖所示:14-5標(biāo)記Google地圖-追蹤個(gè)人行蹤

步驟二:建立主6814-5標(biāo)記Google地圖-追蹤個(gè)人行蹤

步驟三:建立Activity主活動(dòng)類別記錄座標(biāo)清單-1在MainActivity活動(dòng)類別的開(kāi)頭宣告常數(shù)與成員變數(shù),使用Lats[]和Lngs[]陣列儲(chǔ)存?zhèn)€人行蹤的GPS座標(biāo),如下所示:publicclassMainActivityextendsAppCompatActivity{privatestaticfinalintPERMISSIONS_REQUEST_ACCESS_FINE_LOCATION=101;privatefinalintMAX_RECORDS=10;privateLocationManagermanager;privateLocationcurrentLocation;privateintindex=0,count=0;privatedouble[]Lats=newdouble[MAX_RECORDS];privatedouble[]Lngs=newdouble[MAX_RECORDS];…...}14-5標(biāo)記Google地圖-追蹤個(gè)人行蹤

步驟三:建立A6914-5標(biāo)記Google地圖-追蹤個(gè)人行蹤

步驟三:建立Activity主活動(dòng)類別記錄座標(biāo)清單-2onCreate()方法在覆寫onCreate()方法載入版面配置後,取得系統(tǒng)服務(wù)的LocationManager物件,如下所示:@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);manager=(LocationManager)getSystemService(LOCATION_SERVICE);if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M&&checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION)!=PackageManager.PERMISSION_GRANTED){......}}14-5標(biāo)記Google地圖-追蹤個(gè)人行蹤

步驟三:建立A7014-5標(biāo)記Google地圖-追蹤個(gè)人行蹤

步驟三:建立Activity主活動(dòng)類別記錄座標(biāo)清單-3onResume()方法onResume()方法和第14-1-2節(jié)步驟三的同名方法相同,只是更新位置頻率的條件不同,如下所示:intminTime=5000;//毫秒floatminDistance=15;//公尺14-5標(biāo)記Google地圖-追蹤個(gè)人行蹤

步驟三:建立A7114-5標(biāo)記Google地圖-追蹤個(gè)人行蹤

步驟三:建立Activity主活動(dòng)類別記錄座標(biāo)清單-4onPause()方法在覆寫onPause()方法呼叫removeUpdates()方法取消周期更新位置,此方法和第14-1-2節(jié)步驟三的同名方法相同。14-5標(biāo)記Google地圖-追蹤個(gè)人行蹤

步驟三:建立A7214-5標(biāo)記Google地圖-追蹤個(gè)人行蹤

步驟三:建立Activity主活動(dòng)類別記錄座標(biāo)清單-5updatePosition()方法在自訂updatePosition()方法更新TextView元件顯示的位置資訊和個(gè)人行蹤的座標(biāo)清單,如下所示:@OverrideprivatevoidupdatePosition(){TextViewoutput,list;Stringstr="最近個(gè)人行蹤的座標(biāo)清單:\n";output=(TextView)findViewById(R.id.output);list=(TextView)findViewById(R.id.list);if(currentLocation==null){output.setText("取得定位資訊中...");}else{output.setText(getLocationInfo(currentLocation));for(inti=0;i<MAX_RECORDS;i++){if(GPLat[i]!=0.0)str+=GPLat[i]+"/"+GPLng[i]+"\n";}list.setText(st

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論