android o来电广播启动服务,Android来电监听

本文实现来电自动接听,自动录音,自动回拨功能。

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

TelephonyManager mTelephonyManager =(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);

mTelephonyManager.listen(new PhoneListener(), PhoneStateListener.LISTEN_CALL_STATE);

ITelephony mTelephony = ITelephony.Stub.asInterface(ServiceManager.getService("phone"));

}

class PhoneListener extends PhoneStateListener {

private MediaRecorder mRecorder = null;

private boolean flag = false;

private String phoneNum = null;

@Override

public void onCallStateChanged(int state, String incomingNumber) {

// TODO Auto-generated method stub

switch (state) {

case TelephonyManager.CALL_STATE_IDLE:

try {

if (mRecorder != null) {

mRecorder.stop(); // 停止

mRecorder.release();// 释放

mRecorder = null;// 垃圾回收

}

if (flag) {

mTelephony.call(phoneNum);

flag = false;

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

break;

case TelephonyManager.CALL_STATE_OFFHOOK:

//通话录音

try {

mRecorder = new MediaRecorder();

mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); // 此处只实现了录本地MIC输入的声音,若想录入对立通话者的声音

mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

mRecorder.setOutputFile("/mnt/sdcard/" + incomingNumber + "_"+ System.currentTimeMillis() + ".3gp");

mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

try {

mRecorder.prepare();

} catch (Exception e) {

e.printStackTrace();

}

mRecorder.start();

Thread.sleep(30 * 1000);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

break;

case TelephonyManager.CALL_STATE_RINGING:

//来电自动接听

try {

phoneNum = incomingNumber;

flag = true;

if (mTelephony.isRinging()) {

mTelephony.silenceRinger();

mTelephony.answerRingingCall();

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

break;

default:

break;

}

super.onCallStateChanged(state, incomingNumber);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值