149 lines
3.8 KiB
Java
149 lines
3.8 KiB
Java
|
|
package com.coolape.tianrun;
|
|||
|
|
|
|||
|
|
import java.util.Calendar;
|
|||
|
|
|
|||
|
|
import com.android.internal.telephony.ITelephony;
|
|||
|
|
import com.newland.PhoneUtils;
|
|||
|
|
|
|||
|
|
import android.content.Context;
|
|||
|
|
import android.content.Intent;
|
|||
|
|
import android.net.Uri;
|
|||
|
|
import android.os.Message;
|
|||
|
|
import android.telephony.PhoneStateListener;
|
|||
|
|
import android.telephony.TelephonyManager;
|
|||
|
|
import android.util.Log;
|
|||
|
|
import android.widget.Toast;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
*
|
|||
|
|
* @author JD 功能:打电话,录音,通话时间
|
|||
|
|
*
|
|||
|
|
*/
|
|||
|
|
public class CLTeleInterface {
|
|||
|
|
|
|||
|
|
private String TAG = "TeleInterface";
|
|||
|
|
private Context activity;
|
|||
|
|
// private Handler handler;
|
|||
|
|
private Calendar calendar;
|
|||
|
|
private String teleStartTime;
|
|||
|
|
private String teleEndTime;
|
|||
|
|
private TelephonyManager telephonyManager;
|
|||
|
|
public static int TELE_START_TIME = 5;
|
|||
|
|
public static int TELE_END_TIME = 6;
|
|||
|
|
|
|||
|
|
public String getTeleStartTime() {
|
|||
|
|
return teleStartTime;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public String getTeleEndTime() {
|
|||
|
|
return teleEndTime;
|
|||
|
|
}
|
|||
|
|
public PhoneListener listener;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 构造函数
|
|||
|
|
*
|
|||
|
|
* @param activity
|
|||
|
|
* @param handler
|
|||
|
|
* 自定义handler接收消息 msg.what 5:电话拨通时间 6:电话挂断时间
|
|||
|
|
*/
|
|||
|
|
// public TeleInterface(Context activity, Handler handler) {
|
|||
|
|
public CLTeleInterface(Context activity) {
|
|||
|
|
this.activity = activity;
|
|||
|
|
// this.handler = handler;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 拨打电话
|
|||
|
|
*
|
|||
|
|
* @param phoneNum
|
|||
|
|
* 需要拨打号码
|
|||
|
|
*/
|
|||
|
|
public void Call(String phoneNum) {
|
|||
|
|
if (phoneNum.length() != 0) {
|
|||
|
|
Intent phoneIntent = new Intent("android.intent.action.CALL",
|
|||
|
|
Uri.parse("tel:" + phoneNum));
|
|||
|
|
activity.startActivity(phoneIntent);
|
|||
|
|
} else {
|
|||
|
|
Toast.makeText(activity, "不能输入为空", Toast.LENGTH_LONG).show();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 来电监听注册
|
|||
|
|
*/
|
|||
|
|
public void teleListen() {
|
|||
|
|
telephonyManager = (TelephonyManager) activity
|
|||
|
|
.getSystemService(Context.TELEPHONY_SERVICE);// 注册监听器
|
|||
|
|
if(listener == null) {
|
|||
|
|
listener = new PhoneListener();
|
|||
|
|
}
|
|||
|
|
telephonyManager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);// 监听电话状态
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 挂断电话
|
|||
|
|
*
|
|||
|
|
* @throws Exception
|
|||
|
|
*/
|
|||
|
|
public void endCall() throws Exception {
|
|||
|
|
ITelephony iTelephony = PhoneUtils.getITelephony(telephonyManager);
|
|||
|
|
iTelephony.endCall();// 自动挂断电话
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private final class PhoneListener extends PhoneStateListener {
|
|||
|
|
private String incomeNumber=""; // 来电号码
|
|||
|
|
private boolean isComingCall = false;
|
|||
|
|
// private MediaRecorder mediaRecorder;
|
|||
|
|
// private File root_file, file;
|
|||
|
|
|
|||
|
|
@Override
|
|||
|
|
public void onCallStateChanged(int state, String incomingNumber) {
|
|||
|
|
try {
|
|||
|
|
switch (state) {
|
|||
|
|
case TelephonyManager.CALL_STATE_RINGING: // 来电
|
|||
|
|
Log.d(TAG, "来电============");
|
|||
|
|
this.incomeNumber = incomingNumber;
|
|||
|
|
Log.d(TAG, "incomingNumber==" + incomingNumber);
|
|||
|
|
isComingCall = true;
|
|||
|
|
break;
|
|||
|
|
case TelephonyManager.CALL_STATE_OFFHOOK: // 接通电话
|
|||
|
|
Log.d(TAG, "接通电话============");
|
|||
|
|
calendar = Calendar.getInstance();
|
|||
|
|
teleStartTime = calendar.getTime().toString();
|
|||
|
|
|
|||
|
|
Message msg_start = new Message();
|
|||
|
|
msg_start.what = TELE_START_TIME;
|
|||
|
|
msg_start.obj = teleStartTime;
|
|||
|
|
Log.d(TAG, "StartTime=====" + teleStartTime);
|
|||
|
|
|
|||
|
|
if (U3dPlugin.isNeedRecordOutCall) {
|
|||
|
|
// isOutgoingCall = true;
|
|||
|
|
U3dPlugin.onBegainOutgoingCall();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case TelephonyManager.CALL_STATE_IDLE: // 挂掉电话
|
|||
|
|
if(isComingCall) {
|
|||
|
|
U3dPlugin.onEndincomeCall(incomeNumber);
|
|||
|
|
// incomeNumber = "";
|
|||
|
|
isComingCall = false;
|
|||
|
|
} else {
|
|||
|
|
if (U3dPlugin.isNeedRecordOutCall) {
|
|||
|
|
U3dPlugin.onEndgoingCall();
|
|||
|
|
// isOutgoingCall = false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
Log.d(TAG, "挂掉电话===================!");
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
super.onCallStateChanged(state, incomingNumber);
|
|||
|
|
} catch (IllegalStateException e) {
|
|||
|
|
// TODO Auto-generated catch block
|
|||
|
|
e.printStackTrace();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|