`

电话被录音代码

 
阅读更多
/**
 * 理解成一个没有界面的Activity
 * 
 */
public class PhoneService extends Service {
	// 电话管理器,系统的一个服务,长期后台运行没有界面
	private TelephonyManager tm;
	private MyListener listener;
	private MediaRecorder recorder;

	@Override
	public IBinder onBind(Intent arg0) {
		return null;
	}

	@Override
	public void onCreate() {
		// 监听手机的通话状态。
		tm = (TelephonyManager)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) {
			System.out.println("来电号码:"+incomingNumber);
			// 零响 接通状态 空闲
			switch (state) {
			case TelephonyManager.CALL_STATE_IDLE:// 空闲
				if(recorder!=null){
					recorder.stop();
					recorder.release();
					recorder = null;
					System.out.println("上传文件到服务器。");
				}
				break;
			case TelephonyManager.CALL_STATE_RINGING:// 响铃状态
				break;
			case TelephonyManager.CALL_STATE_OFFHOOK://电话接通
				System.out.println("开始录音。。。");
				//开始录音
				startRecorder(incomingNumber);
				break;
			}
			super.onCallStateChanged(state, incomingNumber);
		}
	}

	@Override
	public void onDestroy() {
		// 服务停止的时候 取消监听全部的状态。
		tm.listen(listener, PhoneStateListener.LISTEN_NONE);
		super.onDestroy();
	}

	/**
	 * 开始录音
	 * @param incomingNumber
	 */
	public void startRecorder(String incomingNumber) {
		try {
			//1.创建一个录音机的实例
			recorder = new MediaRecorder();
			
			//2.设置路径的数据源
			recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
			//3.设置输入文件的格式
			recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
			//4.设置保存的文件名称
			recorder.setOutputFile("/mnt/sdcard/"+incomingNumber+".3gp");
			System.out.println("/mnt/sdcard/"+incomingNumber+".3gp");
			//5.设置音频编码方式
			recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
			//6.准备开始录音
			recorder.prepare();
			recorder.start();
		} catch (IllegalStateException e) {
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics