关于android上传图片,视频,音频到rails后台服务器
2015-04-27 16:21
579 查看
关于android上传图片,视频,音频到rails后台服务器
关于android上传图片视频音频到rails后台服务器android客户端实现图片视频音频采集
获取相册图片
拍照
录像
录制音频
将图片等文件上传
rails后台接收文件
rails后台如何接收数据
总结
app客户端项目地址
rails后台项目地址
参考资料
android客户端实现图片,视频,音频采集
我在项目中主要是调用系统接口,获取图片,拍照,录像,录制音频时使用MediaRecorder进行录制。获取相册图片
调用系统相册:Intent galleryIntent = new Intent(Intent.ACTION_GET_CONTENT); //"android.intent.action.GET_CONTENT" galleryIntent.setType("image/*"); //查看类型 String IMAGE_UNSPECIFIED = "image/*" ; Intent wrapperGalleryIntent = Intent.createChooser(galleryIntent, null); startActivityForResult(wrapperGalleryIntent, REQUEST_CODE_TAKE_GALLERY);
拍照
调用系统相机拍照:if (isHasSdcard()) { //指定输出的文件 uploadGalleryFile = new File(file, imagePrefix + format.format(new Date()) + ".jpg"); } Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //"android.media.action.IMAGE_CAPTURE"; cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(uploadGalleryFile)); startActivityForResult(cameraIntent, REQUEST_CODE_TAKE_CAMERA);
录像
调用系统相机录像:if (isHasSdcard()) { uploadVideoFile = new File(file, videoPrefix + format.format(new Date()) + ".3gp"); } Intent videoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); videoIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(uploadVideoFile)); startActivityForResult(videoIntent, REQUEST_CODE_TAKE_VIDEO);
录制音频
使用MediaRecorder录制音频:private void startRecord() { if (hasSdcard()) { sdcardPath = new File(dir); try { recordPath = File.createTempFile(prefix, ".amr", sdcardPath); //三个参数分别为前缀、后缀、目录 } catch (Exception e) { e.printStackTrace(); } } else { Toast.makeText(activity, "未找到存储卡,无法存储", Toast.LENGTH_SHORT).show(); return; } initRecorder(); try { recorder.prepare(); recorder.start(); stateView.setText("正在录音..."); btnStartRecord.setVisibility(View.GONE); btnStopRecord.setVisibility(View.VISIBLE); btnPlayRecord.setVisibility(View.GONE); } catch (Exception e) { e.printStackTrace(); } btnStartRecord.setClickable(false); btnPlayRecord.setClickable(false); btnStopRecord.setClickable(true); }
将图片等文件上传
这里提供一个根据uri找到指定文件的方法点击查看
使用AsyncHttpClient请求将文件上传到服务器
// /* // * 上传文件 // */ @SuppressLint("ShowToast") public void upload(File file, Integer type) { RequestParams params = new RequestParams(); try { params.put("doctor_id", UserInfo.user.getDoctor_id().toString()); params.put("suffer_id", patientInfo.getId().toString()); params.put("resource_type", type.toString()); params.put("resource_size", UsedTools.generateFileSize(file)); params.put("resource_category", category); params.put("resource_url", file); } catch (IOException e) { e.printStackTrace(); } String url = Configuration.newResourceUrl; AsyncHttpClient client = new AsyncHttpClient(); client.post(url, params, new JsonHttpResponseHandler() { @SuppressLint("ShowToast") @Override public void onSuccess(JSONObject response) { try { successResponse = response.ge 4000 t("success").toString(); } catch (JSONException e) { e.printStackTrace(); } if (successResponse.equals("1")) { Toast.makeText(UploadRecord.this, "上传成功", Toast.LENGTH_LONG).show(); } else { Toast.makeText(UploadRecord.this, "上传失败", Toast.LENGTH_LONG).show(); } } @SuppressLint("ShowToast") @Override public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { Toast.makeText(UploadRecord.this, "网络访问异常,请重试", Toast.LENGTH_LONG).show(); } }); }
rails后台接收文件
使用rails开发框架,能够加快开发进度,省去很多麻烦。利用carrierwave插件能够实现图片等文件的上传。具体方法
rails后台如何接收数据
首先,确保carrierwave的相关准备都完成,特别注意要在model中加入一下代码:mount_uploader :doctor_url, DoctorUrlUploader
然后,在controller中加入方法,实现图片的接收。例如更新用户头像:
#更新用户头像 def update_userPictureUrl @user = User.find(params[:doctor_id]) @user.update_attributes(:doctor_url => params[:doctor_url]) if @user.save doctor_url = @user.doctor_url.url json_str = "{'doctor_url':'#{IP}#{doctor_url}'}" #返回用户头像路径 render json: json_str else render json: @user.errors end end
视频和音频的处理都可以通过同样的方法接收
总结
app客户端项目地址
rails后台项目地址
参考资料
Ruby on Rails 指南Ruby on Rails 快速开发 Web 应用程序
Ruby on Rails 教程
AsyncHttpClient框架传输
Volley通信框架
Volley异步加载数据
FastJson简单使用
Gson的使用
相关文章推荐
- 微信公众平台开发[10]-开发模式-高级功能-将图片、视频、音频I内容上传到微信服务器并发送给用户
- Android中使用又拍云存储来上传文件(包括图片、音频和视频等)
- Base64Coder方式实现android向jsp服务器后台上传图片
- android上传图片(及普通参数)到服务器(j2ee后台服务器,ssh框架)
- 关于Java后台处理android上传图片的问题
- android上传图片(及普通参数)到服务器(j2ee后台服务器,ssh框架)
- Android, 关于上传服务器图片Url,
- android 选择视频文件 上传到后台服务器
- 关于kindeditor富文本编辑的上传图片、音频、和视频的使用
- Android上传图片到服务器并显示(后台用Java处理)
- Android前段与后台服务器的图片上传与下载
- android上传图片(及普通参数)到服务器(j2ee后台服务器,ssh框架)
- android上传图片(及普通参数)到服务器(j2ee后台服务器,ssh框架)
- android 选择视频文件 上传到后台服务器
- Android关于本地多媒体(图片、视频、音频)Media的选择总结
- Android开发:仿微信和QQ空间发说说相册读取、拍照、图片裁剪和图片上传服务器等功能的实现
- Android上传图片至java服务器
- 关于andriod录制视频上传服务器的问题,小白还请赐教
- android 用post方式上传图片到服务器