Android執行個體-手機安全衛士(三十)-根據指令完成相應操作一(警示音樂和GPS追蹤)

來源:互聯網
上載者:User

標籤:

一、目標

  根據安全號碼發送的指令完成相應的操作。

                    

二、代碼實現

  1、完成播放警示音樂操作

    ①.在res檔案夾下建立名為raw檔案夾,並將音頻檔案拷貝至該檔案夾下;

    ②.在播放警示音樂命令代碼處(即SMSReceiver類中的else if("#*alarm*#".equals(body))裡面),通過MediaPlayer對象的create(Context context(上下文), int resid(資源檔id))方法建立一個MediaPlayer對象,參數resid就是剛才的raw檔案夾下的音頻檔案(注意在導R.raw包時要導專案檔包,非android.R包)

    ③.調用MediaPlayer對象的start()方法播放音頻,其他setLooping(boolean looping)方法、setVolume(float leftVolume, float rightVolume)方法分別用於設定迴圈播放、左右聲道音量。

代碼如下:

1 //播放警示音樂2                     //Toast.makeText(context, "已播放警示音樂", Toast.LENGTH_SHORT).show();3                     MediaPlayer player = MediaPlayer.create(context, R.raw.warning);4                     player.setLooping(false);5                     player.setVolume(1.0f, 1.0f);6                     player.start();7                     abortBroadcast();
View Code

 

  2、完成擷取GPS位置操作

    ①.GPS位置的最好採用服務進行,所以在src檔案夾下建立service包(取名com.example.mobilesafe.service),主要用於存放各類服務;

    ②.建立類(取名GPSService)用於實現GPS服務,並繼承系統的Service,然後在功能資訊清單檔(AndroidManifest.xml)中註冊服務;

註冊代碼如下:

1 <service android:name="com.example.mobilesafe.service.GPSService"></service>
View Code

 

    ③.在建立的服務類(GPSService)中複寫onCreate()方法和onDestroy() 方法,定義LocationManager對象(取名lm),

    ④.在建立的服務類(GPSService)的onCreate()方法,

      1).通過getSystemService(String name)方法擷取系統服務,參數name為LOCATION_SERVICE(位置服務)並強轉成LocationManager;(額外知識點:通過LocationManager對象的getAllProviders()方法可以擷取所有定位的方式(主要為網路定位、基站定位和GPS定位),該方法傳回值類型為String類型的list數組,遍曆這個數組便可得到定位方式)

      2).通過LocationManager對象(變數名lm)的requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)方法更新位置變化,參數一provider為定位方式,參數二minTime多少時間更新(毫秒為單位,0表示忽略),參數三minDistance位置變化多少米更新(米為單位,0表示忽略),參數四listener位置監聽器(介面,需要實現);

        對於參數一provider(定位方式)可通過LocationManager對象(變數名lm)的getBestProvider(Criteria criteria, boolean enabledOnly(是否為可以的))方法擷取最優的定位方式,參數Criteria criteria為最優定位方式的選擇標準,可以通過Criteria對象的setXXX方法設定最大精度(Accuracy)、對電量的要求(PowerRequirement)、是否付費(CostAllowed)、海拔資訊(Altitude)等。

代碼如下:

1 Criteria criteria = new Criteria();2         criteria.setAccuracy(Criteria.ACCURACY_FINE);3         String bestProvider = lm.getBestProvider(criteria, true);4         lm.requestLocationUpdates(bestProvider, 0, 0, listener);
View Code

 

    ⑤.建立類(取名MyLocationListener)實現位置監聽器介面(LocationListener),實現其未實現的四個方法:1.onLocationChanged(Location location) 當位置變化的時候回調該方法、2.onStatusChanged(String provider, int status, Bundle extras) 當狀態變化(定位開啟或關閉)的時候調用該方法、3.onProviderEnabled(String provider)  當三類定位方式中的某一個可以使用時調用該方法、4.onProviderDisabled(String provider) 當三類定位方式中的某一個不可使用時調用該方法。定義變數並通過new使其執行個體化。   

      在onLocationChanged(Location location) 位置變化的回調方法中

      1).通過location對象的getLatitude()方法擷取位置標準的緯度(double類型,可加“”成String類型),getLongitude()方法擷取位置標準的緯度,getAccuracy()方法擷取精確度

          注意:此時獲得的是標準的經緯度,該經緯度與地圖(Google地圖)上的座標還是有一定偏差的,因此,需要將該經緯度進行轉化,具體詳見“火星座標”章節介紹。

      2).通過SharedPreferences對象將最後的座標位置以索引值對的形式儲存至“config”檔案中;

儲存代碼如下:

1 //通過SharedPreferences對象將最新的位置座標儲存以索引值對的形式至config檔案中2             SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE);3             Editor editor = sp.edit();4             editor.putString("lastlocation", latitude+longitude+accuracy);5             editor.commit();
View Code

 

    ⑤.在建立的服務類(GPSService)的onDestroy()方法中,當服務銷毀時取消位置服務的監聽,即複寫Activity的onDestroy()方法,並通過LocationManager對象的removeUpdates(LocationListener listener)移除監聽,同時將監聽器設為空白(null),以節約資源。

    ⑥.在簡訊接受器(SMSReceiver)類中的簡訊內容為“擷取GPS位置("#*location*#".equals(body))”時

      1).通過Intent(Context packageContext, Class<?> cls)的startService(Intent service)方法啟動剛建立的GPS服務類;

啟動GPS服務代碼如下:

1 //啟動GPS服務2                     Intent intentGPS = new Intent(context, GPSService.class);3                     context.startService(intentGPS);
View Code

      2).通過SharedPreference對象擷取最新的位置座標,並判斷所擷取的座標值是否為空白,若為空白則說明還未擷取到位置,可通過SmsManager對象的sendTextMessage(String destinationAddress(收件者,此處為sender即安全號碼), String scAddress, String text(簡訊內容), PendingIntent sentIntent, PendingIntent deliveryIntent)方法(其餘均為null)回傳簡訊告知安全號碼;若不為空白則發送位置資訊至安全號碼。

      3).增加擷取位置資訊許可權:ACCESS_FINE_LOCATION、ACCESS_COARSE_LOCATION、ACCESS_MOCK_LOCATION。

 

Android執行個體-手機安全衛士(三十)-根據指令完成相應操作一(警示音樂和GPS追蹤)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.