Android實現電話錄音

jopen 9年前發布 | 9K 次閱讀 Java Android

在清單文件AndroidManifest.xml中添加權限:
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <!-- 在SDCard中創建與刪除文件權限 -->
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
    <!-- 往SDCard寫入數據權限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <!-- 訪問internet權限 -->
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

public class PhoneListenerService extends Service {
@Override
public void onCreate() {
        TelephonyManager manager = 
                  (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        //監聽電話的狀態
    manager.listen(new MyListener(), PhoneStateListener.LISTEN_CALL_STATE);
}

private final class MyListener extends PhoneStateListener { private String num; private MediaRecorder recorder; public void onCallStateChanged(int state, String incomingNumber) { switch (state) { case TelephonyManager.CALL_STATE_RINGING: / 電話進來時 / num = incomingNumber; break; case TelephonyManager.CALL_STATEOFFHOOK: / 接起電話時 / try { File file = new File(Environment.getExternalStorageDirectory(), num + "" + System.currentTimeMillis() + ".3gp"); recorder = new MediaRecorder(); recorder.setAudioSource(AudioSource.MIC);//聲音采集來源(話筒) recorder.setOutputFormat(OutputFormat.THREE_GPP);//輸出的格式 recorder.setAudioEncoder(AudioEncoder.AMR_NB);//音頻編碼方式 recorder.setOutputFile(file.getAbsolutePath());//輸出方向 recorder.prepare(); recorder.start(); } catch (Exception e) { e.printStackTrace(); } break; case TelephonyManager.CALL_STATE_IDLE: / 無任何狀態時 / if (recorder != null) { recorder.stop(); recorder.release(); } break; } } } }</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!