Android BroadcastReceiver之电话录音
2017-08-04 18:57
288 查看
电话状态:空闲、响铃、接听
* 获取电话管理器,设置侦听
* 侦听对象的实现
参考:Android BroadcastReceiver
* 获取电话管理器,设置侦听
TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); tm.listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE);
* 侦听对象的实现
class MyPhoneStateListener extends PhoneStateListener{ //当电话状态改变时,此方法调用 @Override public void onCallStateChanged(int state, String incomingNumber) { // TODO Auto-generated method stub super.onCallStateChanged(state, incomingNumber); switch (state) { case TelephonyManager.CALL_STATE_IDLE://空闲 if(recorder != null){ recorder.stop(); recorder.release(); } break; case TelephonyManager.CALL_STATE_OFFHOOK://摘机 if(recorder != null){ recorder.start(); } break; case TelephonyManager.CALL_STATE_RINGING://响铃 recorder = new MediaRecorder(); //设置声音来源 recorder.setAudioSource(MediaRecorder.AudioSource.MIC); //设置音频文件格式 recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setOutputFile("sdcard/haha.3gp"); //设置音频文件编码 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); try { recorder.prepare(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } break; } } }
<service android:name="com.cy.recorder.RecorderService" > </service> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission 4000 android:name="android.permission.RECORD_AUDIO" />
public void click(View v){ Intent intent = new Intent(this, RecorderService.class); startService(intent); }
public class RecorderService extends Service { private MediaRecorder recorder; @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } @Override public void onCreate() { super.onCreate(); //获取电话管理器 TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); //监听电话状态 tm.listen(new MyListener(), PhoneStateListener.LISTEN_CALL_STATE); } class MyListener extends PhoneStateListener{ //电话状态改变时回调 @Override public void onCallStateChanged(int state, String incomingNumber) { super.onCallStateChanged(state, incomingNumber); //判断当前是什么状态 switch (state) { case TelephonyManager.CALL_STATE_IDLE: if(recorder != null){ System.out.println("停止录音"); //停止录音 recorder.stop(); //释放录音机占用的资源 recorder.release(); recorder = null; } break; case TelephonyManager.CALL_STATE_RINGING: if(recorder == null){ recorder = new MediaRecorder(); //设置音频来源 recorder.setAudioSource(MediaRecorder.AudioSource.MIC); //设置输出格式 recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setOutputFile("sdcard/voice.3gp"); //设置音频编码 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); try { System.out.println("准备好"); recorder.prepare(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } break; case TelephonyManager.CALL_STATE_OFFHOOK: if(recorder != null){ System.out.println("开始录音"); recorder.start(); } break; } } } }
参考:Android BroadcastReceiver
相关文章推荐
- Android:BroadcastReceiver:采用广播接收者拦截外拔电话、发送广播、其他常用广播、特性
- Android(java)学习笔记175:BroadcastReceiver之 外拨电话的广播接收者
- Android之BroadcastReceiver
- Android BroadcastReceiver 简介
- Android Broadcastreceiver Example
- Android之BroadcastReceiver的使用
- Android中广播接收者BroadcastReceiver详解
- Android之BroadcastReceiver(二):接收系统广播
- Android四大组件BroadcastReceiver 广播接收者
- Android开发学习笔记(3):BroadcastReceiver简介和注册方式
- android的Service+BroadcastReceiver对网络连接进行监听
- Android 四大组件(Activity、Service、BroadCastReceiver、ContentProvider)
- Android BroadcastReceiver
- Android Development Notes-4(BroadcastReceiver, Manifests)
- Android BroadcastReceiver学习总结
- Android (BroadcastReceiver与程序的开机自启动)
- Android BroadcastReceiver
- Android应用开发:电话监听和录音代码示例
- Android的Service与BroadcastReceiver之二 跨进程调用Service(AIDL Service)
- Android编程学习笔记 之 BroadcastReceiver组件