admin 管理员组文章数量: 1086019
2024年3月18日发(作者:xmlschema版本)
import ;
import ;
import hony;
import onyManager;
import ;
public class PhoneUtils {
/**
* 从TelephonyManager中实例化ITelephony,并返回
*/
static public ITelephony getITelephony(TelephonyManager telMgr)
Exception {
Method getITelephonyMethod
ss().getDeclaredMethod("getITelephony");
essible(true);//私有化函数也能使用
throws
=
return (ITelephony)(telMgr);
}
static public void printAllInform(Class clsShow) {
try {
// 取得所有方法
Method[] hideMethod = laredMethods();
int i = 0;
for (; i < ; i++) {
Log.e("method name", e());
}
// 取得所有常量
Field[] allFields = lds();
for (i = 0; i < ; i++) {
Log.e("Field name", e());
}
} catch (SecurityException e) {
// throw new RuntimeException(sage());
tackTrace();
} catch (IllegalArgumentException e) {
// throw new RuntimeException(sage());
tackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
tackTrace();
}
}
}
是主类,使用PhoneStateListener监听通话状态,以及实现上述
4种电话控制功能,源码如下:
package lephony;
import ty;
import ;
import tateListener;
import onyManager;
import ;
import ;
import roup;
import Button;
public class testTelephony extends Activity {
/** Called when the activity is first created. */
RadioGroup rg;//来电操作单选框
ToggleButton tbtnRadioSwitch;//Radio开关
ToggleButton tbtnDataConn;//数据连接的开关
TelephonyManager telMgr;
CallStateListener stateListner;
int checkedId=0;
@Override
public void onCreate(Bundle savedInstanceState) {
te(savedInstanceState);
setContentView();
telMgr= (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
(new
_CALL_STATE);
CallStateListener(),
llInform();
rg = (RadioGroup)findViewById(lect);
heckedChangeListener(new CheckEvent());
tbtnRadioSwitch=(ToggleButton)ewById(dioSwitch);
lickListener(new ClickEvent());
try {
cked(lephony(telMgr).isRadioOn());
} catch (Exception e) {
Log.e("error",sage());
}
tbtnDataConn=(ToggleButton)ewById(taConn);
lickListener(new ClickEvent());
try {
cked(lephony(telMgr).isDataConnectivityP
ossible());
} catch (Exception e) {
Log.e("error",sage());
}
}
/**
* 来电时的操作
* @author GV
*
*/
public class CheckEvent implements kedChangeListener{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
dId=checkedId;
}
}
/**
* Radio和数据连接的开关
* @author GV
*
*/
public class ClickEvent implements kListener{
@Override
public void onClick(View v) {
if (v == tbtnRadioSwitch) {
try {
lephony(telMgr).setRadio(ked());
} catch (Exception e) {
Log.e("error", sage());
}
}
else if(v==tbtnDataConn){
try {
if(ked())
lephony(telMgr).enableDataConnectivity();
else if(!ked())
lephony(telMgr).disableDataConnectivity();
} catch (Exception e) {
Log.e("error", sage());
}
}
}
}
/**
* 监视电话状态
* @author GV
*
*/
public class CallStateListener extends PhoneStateListener {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if(state==_STATE_IDLE)//挂断
{
Log.e("IDLE",incomingNumber);
}
else if(state==_STATE_OFFHOOK)//接听
{
Log.e("OFFHOOK",incomingNumber);
}
else if(state==_STATE_RINGING)//来电
{
if(dId==toAccept)
{
try {
//需要 android:name="_PHONE_STATE" /> lephony(telMgr).silenceRinger();//静铃 lephony(telMgr).answerRingingCall();// 自动接听 } catch (Exception e) { Log.e("error",sage()); } } else if(dId==toReject) { try { lephony(telMgr).endCall();//挂断 lephony(telMgr).cancelMissedCallsNotification();//取消未接显示 } catch (Exception e) { Log.e("error",sage()); } } } StateChanged(state, incomingNumber); } } }
版权声明:本文标题:Android自动接听电话源码 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1710763814a571880.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论