首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android 监听往电接通状态,注意不是来电

2013-01-23 
Android 监听去电接通状态,注意不是来电又是一年回家时,订票难呀,难于上青天。闲来无事,想写一个电话订票的

Android 监听去电接通状态,注意不是来电

又是一年回家时,订票难呀,难于上青天。

闲来无事,想写一个电话订票的软件,电话不通断线后自动重拔,在网上找了一些资源,发现对于来电状态还好,去电状态资源很少,无奈去看下Phone源码,总算找到一个方法,但是有局限性,即必须在源码下编译才行,并且要和系统签名一致才可使用。下面是具体代码

1.PhoneApp类通过CallManager去注册一个电话状态

public class SpeedService extends Service {private TelephonyManager telephonyManager;private String PhoneNumber;private int dialCount;        private int hasdialCount;private Intent callIntent;private CallManager mCM;        private boolean hasConnect=false;        private boolean isUseCount=false;private static final int PHONE_STATE_CHANGED=102;       private Vibrator mVibrate;private Handler mHandler=new Handler(){public void handleMessage(android.os.Message msg) {switch (msg.what) {case PHONE_STATE_CHANGED:updatePhoneSateChange();break;default:break;}};};@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();           mVibrate=(Vibrator)getSystemService(Context.VIBRATOR_SERVICE);           telephonyManager=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);          mCM=PhoneApp.getInstance().mCM;          mCM.registerForPreciseCallStateChanged(mHandler, PHONE_STATE_CHANGED, null);   }@Overridepublic void onStart(Intent intent, int startId) {// TODO Auto-generated method stubsuper.onStart(intent, startId);                 hasConnect=false;                 isUseCount=false;                 hasdialCount=0;PhoneNumber=intent.getStringExtra("phone");dialCount=Integer.parseInt(intent.getStringExtra("count"));                 if(dialCount!=0){                    isUseCount=true;                 }callIntent=new Intent(Intent.ACTION_CALL);callIntent.setData(Uri.parse("tel:"+PhoneNumber));callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);call(); }private void call(){            if(isUseCount&&hasdialCount<=dialCount){                startActivity(callIntent);                hasdialCount++;             }else if(!isUseCount){               startActivity(callIntent);             }   } private void updatePhoneSateChange(){Call fgCall = mCM.getActiveFgCall();if (mCM.hasActiveRingingCall()) {            fgCall = mCM.getFirstActiveRingingCall();      }        final Call.State state = fgCall.getState();        switch (state) {            case IDLE:             if(!hasConnect){                    call();                }                break;            case ACTIVE://去电接通               mVibrate.vibrate(1500);            hasConnect=true;            break;            default:                break;        }}        };   }

下载地址:http://download.csdn.net/detail/androidchuxueze/5005416

代码必须在源码下编译,如果没手机系统签名,将无法安装




热点排行