服务:电话录制

来源:互联网 发布:大文豪曼因斯坦知乎 编辑:程序博客网 时间:2024/05/01 07:59
package com.example.test;import java.io.IOException;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;public class PhoneLinstenService extends Service {//定义一个系统的电话状态的管理者private TelephonyManager tm;@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic void onCreate() {tm=(TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);tm.listen(new MyPhoneListener(), PhoneStateListener.LISTEN_CALL_STATE);System.out.println("服务被创建了");super.onCreate();}private MediaRecorder recorder;private class MyPhoneListener extends PhoneStateListener{@Overridepublic void onSignalStrengthChanged(int asu) {super.onSignalStrengthChanged(asu);}@Overridepublic void onCallStateChanged(int state, String incomingNumber) {switch (state) {case TelephonyManager.CALL_STATE_IDLE://呼叫状态空闲System.out.println("结束录音,上传数据到服务器");if(recorder!=null){recorder.stop();recorder.release();recorder=null;}break;case TelephonyManager.CALL_STATE_RINGING://响铃状态System.out.println("响铃状态");recorder=new MediaRecorder();//麦克风获取音源 只有自己的声音//recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//对方和自己的声音 索爱 索尼 国产的手机可以           因为 欧洲和美国法律 只有对方同意才可以录recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);String s="/sdcard/"+System.currentTimeMillis()+".3gp";recorder.setOutputFile(s);System.out.println(s);recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);try {recorder.prepare();} catch (IllegalStateException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}break;case TelephonyManager.CALL_STATE_OFFHOOK://接通了电话接触了键盘的锁定System.out.println("开启一个录音机,开始录音");if(recorder!=null)recorder.start();break;default:break;}super.onCallStateChanged(state, incomingNumber);}@Overridepublic void onDataActivity(int direction) {super.onDataActivity(direction);}}@Overridepublic void onDestroy() {System.out.println("服务被销毁了");super.onDestroy();}}
 <service android:name="com.example.test.PhoneLinstenService"></service>

    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
开启服务
Intent intent =new Intent(this,PhoneLinstenService.class);stopService(intent);


0 0
原创粉丝点击