第一步:繼承Service類
- public class SMSService extends Service { }
第二步:在AndroidManifest.xml檔案中的<application>節點裡對服務進行配置:
- <service android:name=".SMSService" />
服務不能自己運行,需要通過調用Context.startService()或Context.bindService()方法啟動服務。這兩個方法都可以啟動Service,但是它們的使用場合有所不同。使用startService()方法啟用服務,調用者與服務之間沒有關連,即使調用者退出了,服務仍然運行。使用bindService()方法啟用服務,調用者與服務綁定在了一起,調用者一旦退出,服務也就終止,大有“不求同時生,必須同時死”的特點。
如果打算採用Context.startService()方法啟動服務,在服務未被建立時,系統會先調用服務的onCreate()方法,接著調用onStart()方法。如果調用startService()方法前服務已經被建立,多次調用startService()方法並不會導致多次建立服務,但會導致多次調用onStart()方法。採用startService()方法啟動的服務,只能調用Context.stopService()方法結束服務,服務結束時會調用onDestroy()方法。
如果打算採用Context.bindService()方法啟動服務,在服務未被建立時,系統會先調用服務的onCreate()方法,接著調用onBind()方法。這個時候調用者和服務綁定在一起,調用者退出了,系統就會先調用服務的onUnbind()方法,接著調用onDestroy()方法。如果調用bindService()方法前服務已經被綁定,多次調用bindService()方法並不會導致多次建立服務及綁定(也就是說onCreate()和onBind()方法並不會被多次調用)。如果調用者希望與正在綁定的服務解除綁定,可以調用unbindService()方法,調用該方法也會導致系統調用服務的onUnbind()-->onDestroy()方法。
服務常用生命週期回調方法如下:
onCreate() 該方法在服務被建立時調用,該方法只會被調用一次,無論調用多少次startService()或bindService()方法,服務也只被建立一次。
onDestroy()該方法在服務被終止時調用。
與採用Context.startService()方法啟動服務有關的生命週期方法
onStart() 只有採用Context.startService()方法啟動服務時才會回調該方法。該方法在服務開始運行時被調用。多次調用startService()方法儘管不會多次建立服務,但onStart() 方法會被多次調用。
與採用Context.bindService()方法啟動服務有關的生命週期方法
onBind()只有採用Context.bindService()方法啟動服務時才會回調該方法。該方法在調用者與服務綁定時被調用,當調用者與服務已經綁定,多次調用Context.bindService()方法並不會導致該方法被多次調用。
onUnbind()只有採用Context.bindService()方法啟動服務時才會回調該方法。該方法在調用者與服務解除綁定時被調用。
你可以使用手機進行現場錄音,實現步驟如下:
第一步:在功能資訊清單檔AndroidManifest.xml中添加音頻燒錄許可權:
- <uses-permission android:name="android.permission.RECORD_AUDIO"/>
第二步:編寫音頻燒錄代碼:
MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//從麥克風採集聲音
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//內容輸出格式
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//音頻編碼方式
recorder.setOutputFile("/sdcard/itcast.amr");
recorder.prepare();//預期準備
recorder.start(); //開始燒錄
...
recorder.stop();//停止燒錄
recorder.reset(); //重設
recorder.release(); //燒錄完成一定要釋放資源