Android基础之电话监听
来源:互联网 发布:网络收音下载 编辑:程序博客网 时间:2024/05/20 02:30
简单的电话监听
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /* * 开始监听 */ public void startMonitor(View view){ Intent service=new Intent(this,MyMonitorService.class); startService(service); } /* * 停止监听 */ public void stopMonitor(View view){ Intent service=new Intent(this,MyMonitorService.class); stopService(service); } }
**********************************************************************
public class MyMonitorService extends Service { protected static final String TAG = "m520it"; protected String mIncomingNumber=""; private boolean isComming=false; /* * 分析 * 手机监听是长期的,不能随着app的关闭service就停止,这里就用不到绑定service */ @Override public void onCreate() { //1获取系统服务中(电话服务)的电话管理 TelephonyManager mService = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); //给电话设置监听 mService.listen(new PhoneStateListener(){ private MediaRecorder recorder; @Override//来电状态的改变会执行这里 public void onCallStateChanged(int state, String incomingNumber) { /**电话设备状态改变的时候回调这个方法 * Callback invoked when device call state changes. * @see TelephonyManager#CALL_STATE_IDLE * @see TelephonyManager#CALL_STATE_RINGING * @see TelephonyManager#CALL_STATE_OFFHOOK */ switch (state) { case TelephonyManager.CALL_STATE_IDLE: if (isComming&&mIncomingNumber!=null) { Log.v(TAG, "CALL_STATE_IDLE------->保存录音");//开启服务的时候执行一次,每挂断一次电话执行一次 recorder.stop(); recorder.release(); recorder=null; isComming=false; mIncomingNumber=""; } break; case TelephonyManager.CALL_STATE_RINGING: Log.v(TAG, "CALL_STATE_RINGING------>保存来电的号码");//铃声响起的时候执行,只有此时才可以获取来电的电话号码 mIncomingNumber=incomingNumber; break; case TelephonyManager.CALL_STATE_OFFHOOK: isComming=true; Log.v(TAG, "CALL_STATE_OFFHOOK---->开始录音");//接通的时候执行执行 recorder = new MediaRecorder(); //设置声音来源,麦克风 recorder.setAudioSource(AudioSource.MIC); //设置输出格式 recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); //设置编码方式 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); //设置输出文件的路径, recorder.setOutputFile(getPath(mIncomingNumber)); //准备输出 try { recorder.prepare(); recorder.start(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } break; } } //监听来电时的状态 }, PhoneStateListener.LISTEN_CALL_STATE); } protected String getPath(String mIncomingNumber2) { // TODO Auto-generated method stub //新建一个文件,作为文件保存的路径,根据来电的号码和当前的时间作为文件名 SimpleDateFormat dateFormat=new SimpleDateFormat("yy-MM-dd HH:mm:ss"); File file = new File(getFilesDir(), dateFormat.format(new Date())+":"+mIncomingNumber2+".3gp"); return file.getAbsolutePath(); } @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; }}
权限
*****************************************
<!--读取电话状态--> <!--录制音频--> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.RECORD_AUDIO"/>
阅读全文
0 0
- Android基础之电话监听
- android 之电话监听
- Android之服务Service---电话监听
- Android 电话监听
- Ohone/android 监听电话
- Android-电话监听工具
- android 实现监听电话
- Android监听电话状态
- android 监听电话状态
- android 监听电话状态
- android 监听电话状态
- Android 电话状态监听
- 【Android】监听电话状态
- android电话状态监听
- android电话状态监听
- Android电话广播监听
- android服务监听电话
- android电话监听实现
- C++
- 状态图
- Java实现-翻转链表
- mtk 功能机驱动调试
- java中回调函数的理解
- Android基础之电话监听
- 为什么要使用变调夹 简单易懂版
- pandas中loc iloc ix的区别
- 4.1.1--二分--Can you solve this equation?
- 标准IO缓冲详解全缓冲、行缓冲、不缓冲
- javaweb 的错误信息在tomcat的位置
- Java+Selenium3方法篇11-findElement之By CSS
- 关于ListView嵌套ListView,外层Item点击事件的冲突解决
- 浅谈类加载器