首页 > 系统 > Android > 正文

45.android服务service-电话录音机

2019-11-09 14:34:30
字体:
来源:转载
供稿:网友
电话的状态:挂断电话来电状态

接通电话状态

用到的函数:

TelephonyManager manager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);//获得电话管理器manager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);//对呼叫状态进行监听PRivate PhoneStateListener listener = new PhoneStateListener(){@Overridepublic void onCallStateChanged(int state, String incomingNumber) {//当状态改变时调用super.onCallStateChanged(state, incomingNumber);switch(state){case TelephonyManager.CALL_STATE_RINGING://来电//处理代码break;case TelephonyManager.CALL_STATE_IDLE://挂断电话//处理代码break;case TelephonyManager.CALL_STATE_OFFHOOK://接通电话状态//处理代码break;}}

};

录音的核心代码

recorder = new MediaRecorder();recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//设置输入流设备为麦克风recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//设置输出格式recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//设置编码方式recorder.setOutputFile(filename); //设置输出文件recorder.prepare();//准备recorder.start();//开始录制recorder.stop();//停止录制recorder.release(); //释放资源

权限配置

    <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"/>清单文件配置

<service android:name="com.ldw.record.recorderService"></service>activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="启动录音服务"         android:onClick="click"        /></RelativeLayout>MainActivity.java

package com.ldw.record;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public void click(View v){    	Intent intent = new Intent(this, recorderService.class);    	startService(intent);    }    }recorderService.java

package com.ldw.record;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 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(Context.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:  //空闲 	        	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.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); //设置输出格式                  recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);    //设置编码方式                  recorder.setOutputFile("sdcard/luyin.3gp");     //设置输出文件                  try {                      recorder.prepare();                  } catch (Exception e) {                      e.printStackTrace();                  }                  recorder.start();  	            break;  	        case TelephonyManager.CALL_STATE_OFFHOOK:   //接通电话状态  	        	//开始录音	        	System.out.println("接通电话状态");	            break;  	        }  		}	}}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表