android录音-上传-下载-录音对话框(含jsp服务器端)

下载地址:http://download.csdn.net/detail/b275518834/7731671
工程编码:GBK
调通需要设置 RecordDialog类中的参数---
服务器上传地址 uploadServerUrl
服务器下载播放地址 downloadServerUrl---
FileHelper 文件下载工具类
OnStateListener 接口-状态回调
RecordDialog 录音对话框
RecordManger 录音功能类
TalkNetManager 网络会话对话框
UploadUtil 文件上传工具类

效果图:客服端


录音上传核心代码

package com.im.util;

import java.io.File;
import java.io.IOException;
import java.util.Calendar;
import java.util.Locale;

import android.content.Context;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.SoundPool;
import android.os.AsyncTask;
import android.os.Environment;
import android.text.format.DateFormat;

public class TalkNetManager {
	/** 录音管理类 */
	private RecordManger recordManger = new RecordManger();
	private Context context;
	/** 下载文件服务器地址 */
	private String downloadFileServerUrl;
	/** 下载文件服务器地址 */
	private String uploadFileServerUrl;

	private OnStateListener uploadFileStateListener;
	private OnStateListener downloadFileFileStateListener;

	/** 启动录音不进行网络上传 */
	public void startRecord() {
		try {
			recordManger.startRecordCreateFile();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/** 停止录音 */
	public File stopRecord() {
		return recordManger.stopRecord();// 停止录音
	}

	/** 停止录音后上传 */
	public File stopRecordAndUpload() {
		File file = recordManger.stopRecord();// 停止录音
		if (file == null || !file.exists() || file.length() == 0) {
			if (uploadFileStateListener != null)
				uploadFileStateListener.onState(-1, "文件不存在或已经损坏");
			return null;
		}

		new UpLoadecordFile().execute();// 调用异步任务
		return recordManger.getFile();
	}

	/** 异步任务-录音上传 */
	public class UpLoadecordFile extends AsyncTask<String, Integer, String> {

		@Override
		protected String doInBackground(String... parameters) {
			// TODO Auto-generated method stub11
			return UploadUtil.uploadFile(recordManger.getFile(),
					uploadFileServerUrl);

		}

		@Override
		protected void onPostExecute(String result) {
			if (result == null) {
				if (uploadFileStateListener != null)
					uploadFileStateListener.onState(-2, "上传文件失败");
				return;
			}

			if (result != null)
				if (uploadFileStateListener != null)
					uploadFileStateListener.onState(0, "上传文件成功");
		}

	}

	/** 下载后播放 */
	public void downloadFileAndPlay(String uploadFilename) {
		new DownloadRecordFile().execute(uploadFilename);
	}

	/** 异步任务-下载后播放 */
	public class DownloadRecordFile extends AsyncTask<String, Integer, File> {

		@Override
		protected File doInBackground(String... parameters) {
			// TODO Auto-generated method stub11
			try {
				String filename = new DateFormat().format("yyyyMMdd_HHmmss",
						Calendar.getInstance(Locale.CHINA)) + ".amr";
				return FileHelper.DownloadFromUrlToData(downloadFileServerUrl
						+ parameters[0], filename, context);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return null;

		}

		@Override
		protected void onPostExecute(File result) {

			if (result == null || !result.exists() || result.length() == 0) {
				if (downloadFileFileStateListener != null) {
					downloadFileFileStateListener.onState(-1, "下载文件失败");
					return;
				}
			}
			MediaPlayer mediaPlayer = new MediaPlayer();
			mediaPlayer.setOnCompletionListener(new OnCompletionListener() {

				@Override
				public void onCompletion(MediaPlayer mediaPlayer) {
					// TODO Auto-generated method stub
					mediaPlayer.release();
				}
			});
			try {
				mediaPlayer.setDataSource(result.getPath());
				mediaPlayer.prepare();
				mediaPlayer.start();
				if (downloadFileFileStateListener != null) {
					downloadFileFileStateListener.onState(0, "成功");
					return;
				}

			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}

	}

	public RecordManger getRecordManger() {
		return recordManger;
	}

	public void setRecordManger(RecordManger recordManger) {
		this.recordManger = recordManger;
	}

	public Context getContext() {
		return context;
	}

	public void setContext(Context context) {
		this.context = context;
	}

	public void setDownloadFileServerUrl(String downloadFileServerUrl) {
		this.downloadFileServerUrl = downloadFileServerUrl;
	}

	public String getUploadFileServerUrl() {
		return uploadFileServerUrl;
	}

	public void setUploadFileServerUrl(String uploadFileServerUrl) {
		this.uploadFileServerUrl = uploadFileServerUrl;
	}

	public OnStateListener getUploadFileStateListener() {
		return uploadFileStateListener;
	}

	public void setUploadFileStateListener(
			OnStateListener uploadFileStateListener) {
		this.uploadFileStateListener = uploadFileStateListener;
	}

	public OnStateListener getDownloadFileFileStateListener() {
		return downloadFileFileStateListener;
	}

	public void setDownloadFileFileStateListener(
			OnStateListener downloadFileFileStateListener) {
		this.downloadFileFileStateListener = downloadFileFileStateListener;
	}

	public String getDownloadFileServerUrl() {
		return downloadFileServerUrl;
	}
}




服务器端







服务器端上传代码

package com.project3gabs.action;



import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UploadServlet extends HttpServlet
{
	protected void service(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException
	{
		
		System.out.println("服务器发现上传文件");
		

		request.setCharacterEncoding("UTF-8");
		
		if(request.getHeader("user-agent")!=null&&(request.getHeader("user-agent").toLowerCase().indexOf("mozilla")!=-1)) 
		{ 
			System.out.println("访问端-PC");
		}else 
		{ 
			System.out.println("访问端-手机");
		
		}

		
		
//		try {
//			request.setCharacterEncoding("UTF-8"); // 设置处理请求参数的编码格式
//			response.setContentType("text/html;charset=UTF-8"); // 设置Content-Type字段值
//			PrintWriter out = response.getWriter();
//			System.out.println("附加信息"+URLEncoder.encode(request.getParameter("msg"),"UTF-8"));
//
//		} catch (Exception e1) {
//			// TODO Auto-generated catch block
//			e1.printStackTrace();
//		}
		try
		{
			
			
			// 下面的代码开始使用Commons-UploadFile组件处理上传的文件数据
			FileItemFactory factory = new DiskFileItemFactory(); // 建立FileItemFactory对象
			ServletFileUpload upload = new ServletFileUpload(factory);
			// 分析请求,并得到上传文件的FileItem对象
			List<FileItem> items = upload.parseRequest(request);
			// 从web.xml文件中的参数中得到上传文件的路径
			String uploadPath = this.getServletContext().getRealPath("/")+"\\uploadfile\\";
			
			System.out.println(uploadPath);
			
			File file = new File(uploadPath);
			if (!file.exists())
			{
				file.mkdir();
			}
			String filename = null; // 上传文件保存到服务器的文件名
			InputStream is = null; // 当前上传文件的InputStream对象
			// 循环处理上传文件
			
		
			
			for (FileItem item : items)
			{
				
				// 处理普通的表单域
				if (item.isFormField())
				{
					try {
						System.out.println(item.getFieldName()+item.getString());
					} catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					if (item.getFieldName().equals("filename"))
					{
						// 如果新文件不为空,将其保存在filename中
						if (!item.getString().equals(""))
							filename = item.getString("UTF-8");
						System.out.println("filename="+filename.replace("\\\\", "\\"));
					}

					
				}
				// 处理上传文件
				else if (item.getName() != null && !item.getName().equals(""))
				{
					// 从客户端发送过来的上传文件路径中截取文件名
					filename = item.getName().substring(
							item.getName().lastIndexOf("\\") + 1);
					
					is = item.getInputStream(); // 得到上传文件的InputStream对象
				
				}
			}
			// 将路径和上传文件名组合成完整的服务端路径
			filename = uploadPath + filename;
			System.out.println("filename="+filename);
			// 如果服务器已经存在和上传文件同名的文件,则输出提示信息
			if (new File(filename).exists())
			{
				new File(filename).delete();
			}
			// 开始上传文件
			if (!filename.equals(""))
			{
				// 用FileOutputStream打开服务端的上传文件
				FileOutputStream fos = new FileOutputStream(filename);
				byte[] buffer = new byte[8192]; // 每次读8K字节
				int count = 0;
				// 开始读取上传文件的字节,并将其输出到服务端的上传文件输出流中
				while ((count = is.read(buffer)) > 0)
				{
					fos.write(buffer, 0, count); // 向服务端文件写入字节流
					
				}
				fos.close(); // 关闭FileOutputStream对象
				is.close(); // InputStream对象
				
				System.out.println("文件上传成功!");
			}
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}


服务器端下载代码

package com.project3gabs.action;


import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageDecoder;

public class DownloadFile extends HttpServlet {

	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html");
		javax.servlet.ServletOutputStream out = response.getOutputStream();
		String filepath = request.getRealPath("/") + "uploadfile/";
		String filename = new String(request.getParameter("filename").getBytes(
				"ISO8859-1"), "UTF-8").toString();
		//String filename = java.net.URLDecoder.decode(request.getParameter("filename"));
		System.out.println("DownloadFile filepath:" + filepath);
		System.out.println("DownloadFile filename:" + filename);
		java.io.File file = new java.io.File(filepath + filename);
		if (!file.exists()) {
			System.out.println(file.getAbsolutePath() + " 文件不存在!");
			return;
		}
		// 读取文件流
		java.io.FileInputStream fileInputStream = new java.io.FileInputStream(
				file);
		// 下载文件
		// 设置响应头和下载保存的文件名
		if (filename != null && filename.length() > 0) {
			response.setContentType("application/x-msdownload");
			response
					.setHeader("Content-Disposition", "attachment; filename="
							+ new String(filename.getBytes("gb2312"),
									"iso8859-1") + "");
			if (fileInputStream != null) {
				int filelen = fileInputStream.available();
				// 文件太大时内存不能一次读出,要循环
				byte a[] = new byte[filelen];
				fileInputStream.read(a);
				out.write(a);
			}
			fileInputStream.close();
			out.close();
		}
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out
				.println("<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>");
		out.println("<HTML>");
		out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println(" <BODY>");
		out.print(" This is ");
		out.print(this.getClass().getName());
		out.println(", using the POST method");
		out.println(" </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}
}


下载地址:http://download.csdn.net/detail/b275518834/7731671











  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值