監聽手機錄音

來源:互聯網
上載者:User

標籤:android   style   http   color   使用   strong   

需求分析:        記錄通話過程中的錄音,並儲存到指定路徑~
      知識點:1.手機開機發出廣播,廣播接受者收到通知,開啟service服務               2.Service工作流程:
                    1.擷取手機管理對象·
                    2.注冊監聽器,對應手機狀態
                    3.依據手機狀態(響鈴、通話、空暇),建立Mediaplay對象,暫停 這裡監聽手機狀態,加入?許可權   <uses-permission android:name="android.permission.READ_PHONE_STATE"/>代碼:TelephonyManager manager=(TelephonyManager) getSystemService(TELEPHONY_SERVICE);//擷取電話管理  manager.listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE);    //用電話管理器注冊一個監聽器,監聽電話狀態注意:手機狀態監聽這,能夠監聽多個狀態,LISTEN_CALL_STATE監聽的是手機狀態的變化,下面該監聽器其它的監聽對象手機狀態改變的state三種值:空暇、通話、掛斷
依據三種狀態,處理Mediaplayer,代碼

public void onCallStateChanged(int state, String incomingNumber) {// 電話狀態改變時運行該方法switch (state) {case TelephonyManager.CALL_STATE_RINGING:Log.d("Debug","響鈴");num = incomingNumber;// 響鈴時, 記錄號碼break;case TelephonyManager.CALL_STATE_OFFHOOK:Log.d("Debug","開始錄音");startRecording();// 摘機時, 開始錄音break;case TelephonyManager.CALL_STATE_IDLE:Log.d("Debug","空暇狀態");stopRecording();// 空暇時, 結束錄音break;}}思考:假設手機沒有響鈴?停止錄音:private void stopRecording() {if (mRecorder != null) {mRecorder.stop();// 停止        mRecorder.release();     // 釋放資源        mRecorder = null;// 記憶體回收}}開始錄音:private void startRecording() {try {Log.d("Debug", "startRecording");mRecorder = new MediaRecorder(); // 建立媒體記錄器mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);// 設定音頻源mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);// 設定輸出格式mRecorder.setOutputFile("/mnt/sdcard/" + num + "_" + System.currentTimeMillis() + ".3gp");                             // 設定輸出檔案路徑mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);// 設定編碼mRecorder.prepare();// 準備mRecorder.start();// 開始} catch (Exception e) {e.printStackTrace();} }}} 總結:MediaPlayer操作過程,停止和錄音過程~,這裡使用到了sdcard所以,必須聲明許可權。      <uses-permission android:name="android.permission.RECORD_AUDIO"/>//同意程式進行錄音      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> //寫入儲存卡資訊清單檔的配置資訊: <receiver  android:name=".PhoneBroacast">            <intent-filter >                <action android:name="android.intent.action.BOOT_COMPLETED"/>            </intent-filter>        </receiver>        <service android:name=".PhoneService">           </service>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.